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 导致错误

Drupal.htaccess用于启用干净的url';s

XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404

.htaccess 文件未被读取

React Native - TypeError:无法读取未定义的属性“干净”

.htaccess 适用于 Apache 服务器,但不适用于 FTP 目录