Apache mod_rewrite无法传递变量

时间:2014-07-07 09:43:10

标签: php macos apache .htaccess mod-rewrite

我很难弄清楚为什么我的重写规则在线完美运行(网站启动并运行),但是当我尝试在我的Mac上运行本地副本时失败。我没有使用MAMP o LAMP,我手动安装了apache和php。 Apache是​​2.2.26,php是5.4.20。

我的.htaccess文件中有更多规则,但我关注的是这两个:

RewriteRule ^category/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ category.php?slug=$1&page=$2 [L]
RewriteRule ^category/([a-zA-Z0-9_-]+)/?$ category.php?slug=$1 [L]

基本上变量没有传递给php文件。除此之外,下面的规则完全正常!即使在我的本地设置中,我也看不出任何差异,除了我有两个以&#34开头的规则; ^ category /"

RewriteRule ^project/([a-zA-Z0-9_-]+)/?$ project.php?slug=$1 [L]

为什么这可以在线工作(ubuntu)但在本地失败?

1 个答案:

答案 0 :(得分:1)

我猜你打开了多视图。这会导致mod_negotiation模糊匹配对文件路径资源的请求。因此,当它看到/category/something并看到文件category.php时,它会将请求权限发送到php文件(在本例中为ala PATHINFO),从而完全绕过mod_rewrite。

尝试关闭多视图:

Options -Multiviews