如何为生产服务器配置laravel项目并在url中删除public

时间:2016-12-05 03:53:39

标签: php apache .htaccess laravel laravel-5

LARAVEL 5.0 | APACHE 2.4.7 | PHP 5.5.8

我知道这是一个非常受欢迎的问题。很多人说将公共内容移动到根目录(由于安全问题我觉得很尴尬),重写.htaccess,创建虚拟主机。

我尝试创建虚拟主机,因为我认为这是更可接受的解决方案。

但是我的配置遇到了一些问题:

我在此期间正在运行easyphp,我喜欢测试我是否可以在设置它之前删除网址中的公共路线。

的httpd.conf

NameVirtualhost *:80
<VirtualHost *:80>
    DocumentRoot "${path}/data/localweb/quantum.dev/public"
    ServerAdmin admin@localhost
    ServerName quantum.dev
    ServerAlias www.quantum.dev
    <Directory "${path}/data/localweb/quantum.dev/public">
        AllowOverride All
        Options Indexes FollowSymLinks

        Order deny,allow
        Allow from quantum.dev
        Deny from all
        Require all granted
    </Directory>
</VirtualHost>

我修改了 C:\ Windows \ System32 \ drivers \ etc

主机

127.0.0.1       quantum.dev

当我尝试浏览 http://127.0.0.1/quantum.dev/ 时,它会加载文件列表而不是公共内的项目

http://127.0.0.1/quantum.dev/ enter image description here

2 个答案:

答案 0 :(得分:0)

当您在c-panel中为您的域选择目录时,只需提供路径直到Laravel的公共目录,而不仅仅是Laravel的根目录。这样你根本不需要改变.htaccess。

我刚刚将我的网站上传到制作中并按照上述步骤操作。它工作得非常好。

答案 1 :(得分:0)

这是我的配置对我来说很好。首先,您的虚拟主机配置应该是这样的:

ServerAdmin webmaster@domaine.dev
ServerName domaine.dev
DocumentRoot /var/www/mysiteweb/public/

    <Directory /var/www/mysiteweb/>
            Options -Indexes
            DirectoryIndex index.php index.html
            AllowOverride All
    </Directory>

之后,在您的.htaccess laravel文件中进行此操作:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

请勿忘记检查mod_rewrite是否已启用。

希望有所帮助。问候。