apache2 上的 Laravel 5.1 不会启动


Laravel 5.1 on apache2 wont to start

将 laravel 文件添加到文件夹 /var/www/html/laravel3之后,我更改了我拥有的apache2.conf文件:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/laravel3
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
...

但是当我尝试 http://mywebsite.com 时,我得到:

未找到

在此服务器上找不到请求的 URL/auth/login。

我也从/laravel3 文件夹中删除 .htaccess 文件

现在怎么办?

在 apache2 中,我有:

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>
<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

在网站可用/laravel.conf 中,我有:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
    ServerName bedbids.com
        DocumentRoot "/var/www/html/laravel3/public"
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory "/var/www/html/laravel3/public">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

不要删除.htaccess文件,它会重写对index.php的请求。

对于您的 apache 配置,DocumentRoot应指向公共目录,您应该设置 AllowOverride All ,否则 htaccess 将被忽略。

这应该适合您:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/laravel3/public
    <Directory /var/www/html/laravel3/public/>
            AllowOverride All
    </Directory>
    ...

更改后,重新启动 apache,它应该已启动并运行。

你应该将 Apache 指向 Laravel 根目录中的public目录,例如:

DocumentRoot "/var/www/html/laravel3/public"
<Directory "/var/www/html/laravel3/public">

此外,您不应编辑或删除.htaccess

进行这些更改后,不要忘记重新启动 Apache 。

更新

.htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>