【问题标题】:Laravel pretty URLLaravel 漂亮的网址
【发布时间】:2014-04-22 10:29:45
【问题描述】:

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

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

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

【问题讨论】:

  • 这可能只是您的问题中的拼写错误,但适合您的 URL 不在 public 目录中:/~user/lara/index.php/users 而不是 /~user/lara/public/index.php/users,这是您的重写器会做的对于/~user/lara/public/users URL。
  • 确实是错字,刚刚更正了
  • 哦。哦,好吧,我们对快速修复的希望和梦想到此为止!
  • 绝对 :( 我真的要疯了
  • 这可能是因为 ~user 正在使用 mod_userdir (或类似的东西),因此重写规则实际上并没有正确重写(即使看起来是这样)。尝试在 RewriteBase /~user/lara/public/ 添加一个 RewriteBase 我知道这不是一个优雅的修复,但如果它有效,它就有效,对吧?

标签: laravel pretty-urls


【解决方案1】:

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

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

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

RewriteBase /~user/lara/public/

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 2013-07-03
    • 2016-12-31
    • 2016-02-14
    • 2012-03-07
    • 1970-01-01
    • 2011-02-04
    • 2011-10-03
    相关资源
    最近更新 更多