在Apache + Ubuntu上找不到Laravel 5.1/auth/login

Joh*_*les 2 php apache laravel

我找到与laravel 5/auth/login未找到完全相同的问题.唯一的区别是他正在使用WAMP,而我正在使用Apache + Ubuntu 14.

当我访问http://example.com/index.php/auth/login时,网页显示完美.但是http://example.com/auth/login将返回此错误

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

我尝试了为Apache启用mode_rewrite,并重新安装了Apache,如laravel 5/auth/login not found中所示.两种方式都没有用.

Dam*_*rsy 6

确保你有正确的.htaccess文件,例如你安装了/var/www/html/myapp,你应该.htaccess公共目录(/var/www/html/myapp/public)中有一个文件,内容如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /myapp/

    # 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]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

另外,Apache文档根配置是否正确?

打开终端,运行sudo nano /etc/apache2/sites-available/000-default.conf并将这些行放入配置文件中,将默认根映射到myapp/public文件夹:

Alias /myapp /var/www/html/myapp/public/
<Directory "/var/www/html/myapp/public">
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

然后重启Apache

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

当然应该启用Mod重写:

a2enmod rewrite
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

您现在应该可以访问您的网站了 http://localhost/myapp

  • 我强调`AllowOverride All` ..它可能是根本原因,因为默认安装实际上在/ var/www文件夹上有AllowOverride None,你可能需要在/etc/apache2/apache2.conf中更改它 (2认同)