Laravel漂亮的URL

时间:2014-03-17 09:25:34

标签: laravel pretty-urls

我在这里疯了!我正在努力学习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的所有相关问题,没有一个对我有用!

1 个答案:

答案 0 :(得分:1)

这很可能是因为您在请求期间更改了文档根目录。从您的网址(使用~user细分)看起来您正在使用mod_userdir或类似内容,以及这些类型的插件允许您将给定的网址前缀映射到文档根目录不是服务器的正常选择。

因此,您有时会遇到这样的问题,其中找到了正确的.htaccess文件,但其重写的URL是针对原始文档根而不是修改后的文件,因此无法找到您的index.php文件(也许,说实话,我真的不知道,这都是猜想)。这也是直接进入index.php/users的原因 - 问题不在于设置本身,而在于重写规则与文档根目录的混合。

因此,修复方法是使用RewriteBase行,并将以下内容添加到.htccess文件中:

RewriteBase /~user/lara/public/