我在这里疯了!我正在努力学习Laravel,漂亮的URL只是不起作用。
我已从我的apache配置文件中启用mod_rewrite
,我已在我的用户配置文件中将AllowOverride
设置为All
,并且我的.htaccess
文件中包含以下内容: Laravel安装的public
文件夹:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
我输入http://localhost/~user/lara/public/index.php/users
它有效,但http://localhost/~user/lara/public/users
我收到404 Not Found
错误
The requested URL /Users/user/Sites/lara/public/index.php/users was not found on this server.
您可以看到重定向工作正常,因为public/users
已变为public/index.php/users
,但它说未找到,即使我手动输入public/index.php/users
时它会显示输出。
我已经阅读了关于SO的所有相关问题,没有一个对我有用!
答案 0 :(得分:1)
这很可能是因为您在请求期间更改了文档根目录。从您的网址(使用~user
细分)看起来您正在使用mod_userdir
或类似内容,以及这些类型的插件允许您将给定的网址前缀映射到文档根目录不是服务器的正常选择。
因此,您有时会遇到这样的问题,其中找到了正确的.htaccess文件,但其重写的URL是针对原始文档根而不是修改后的文件,因此无法找到您的index.php
文件(也许,说实话,我真的不知道,这都是猜想)。这也是直接进入index.php/users
的原因 - 问题不在于设置本身,而在于重写规则与文档根目录的混合。
因此,修复方法是使用RewriteBase
行,并将以下内容添加到.htccess文件中:
RewriteBase /~user/lara/public/