mod_rewrite没有传递查询字符串

时间:2013-10-31 19:54:15

标签: apache .htaccess mod-rewrite php

我有一个安装了PHP CGI的apache2服务器来运行php脚本 在我的一个目录中,我有.htaccess文件,其中包含以下内容:

RewriteEngine On
RewriteRule ^article\/(\d+)\/?$ article.php?id=$1 [NC,QSA]

输入http://www.mysite.com/article/132/之类的URI时,重写会进行重定向,但在article.php内我无法从$_GET["id"] / {{var_dump $_GET中读取$_REQUEST 1}}导致空数组

在另一台服务器上我有一个带有mod_php的apache - 一切正常。

我不是百分之百确定CGI就是这个原因 - 但我有充分理由这样做

谢谢!

1 个答案:

答案 0 :(得分:2)

这听起来有点像mod_negotiation,当你不想要它时,它会搞乱。尝试将此添加到您的htaccess文件中:

Options -Multiviews

Multiviews选项打开mod_negotiation中的某些内容,该内容尝试猜测请求后的资源。当它看到URI /article/something然后它看到有一个文件/article.php时,它会认为您的意思是/article.php/something并完全提供,完全绕过mod_rewrite。