【问题标题】:htaccess for clean urls not being read by apache?htaccess 用于 apache 未读取的干净 url?
【发布时间】:2012-07-01 08:24:00
【问题描述】:

我有点疯了,因为我已经浪费了两个小时来为 laravel 框架启用干净的 URL。

我在 Mac 上并且有 XAMPP 设置。 Loadmodule mod_rewrite 被注释掉,php_info() 表示 mod_rewrite 模块已加载。

我在 laravel 框架的公用文件夹中的 .htaccess 文件包含清理 URL 的代码(如他们网站上所述),但是当我浏览 domain.com/account 时,它仍然给我一个 404。

laravel 框架文件夹作为虚拟主机运行。

这可能是什么问题?!

<IfModule mod_rewrite.c>
     RewriteEngine on

     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d

     RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

【问题讨论】:

  • 移除 IfModule 标签。如果您这样做,并且 mod_rewrite 未启用,您将收到 500 错误。像下面描述的 Concordus 一样添加 RewriteBase 也是一个好主意。

标签: .htaccess mod-rewrite apache laravel


【解决方案1】:

确保 Loadmodule mod_rewrite 未注释。

确保您为虚拟主机设置了适当的 AllowOverride 以允许 .htaccess 执行其操作。

一个好的指令的例子是:

<Directory "/some/absolute/path/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
</Directory> 

.htaccess 要遵循的一个很好的模式是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

非常接近你正在做的事情。

重启你的 apache 服务器。

【讨论】:

  • 原来虚拟主机的 AllowOverride 设置为 none。非常感谢。
  • NP...很多年前我不得不通过艰苦的方式学习。我感到疼痛。
  • 它对我不起作用...我的配置完全相同。还有什么办法?
猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 2011-01-06
  • 2016-04-24
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
相关资源
最近更新 更多