1

我在这里疯了!我正在尝试学习 Laravel,但漂亮的 URL 是行不通的。

mod_rewrite我已从我的 apache 配置文件中启用,我已在我的用户配置文件中设置,并且我在 Laravel 安装文件夹中的文件中有AllowOverride以下内容:All.htaccesspublic

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 的所有相关问题,但没有一个对我有用!

4

1 回答 1

1

这很可能是由于您在请求期间更改了文档根目录。从~user您正在使用的 URL(带有段)mod_userdir或类似内容的外观来看,这些类型的插件允许您将给定的 URL 前缀映射到不是服务器正常的文档根目录。

因此,您有时会遇到这样的问题,即找到正确的 .htaccess 文件,但其重写的 URL 针对原始文档根目录而不是修改后的根目录,因此index.php无法找到您的文件(也许,老实说我不知道​​) t真的知道,这都是猜想)。这也是为什么直接开始index.php/users工作的原因——问题不在于设置本身,而在于重写规则的混合和文档根目录的更改。

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

RewriteBase /~user/lara/public/
于 2014-03-17T11:44:54.087 回答