htaccess 用于 apache 未读取的干净 url?
Posted
技术标签:
【中文标题】htaccess 用于 apache 未读取的干净 url?【英文标题】:htaccess for clean urls not being read by apache? 【发布时间】: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 也是一个好主意。 【参考方案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...很多年前我不得不通过艰苦的方式学习。我感到疼痛。 它对我不起作用...我的配置完全相同。还有什么办法?以上是关于htaccess 用于 apache 未读取的干净 url?的主要内容,如果未能解决你的问题,请参考以下文章
localhost 未读取 htaccess,httpd AllowOverride All 导致错误
XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404