mod_rewrite不传递查询字符串


mod_rewrite not passing querystring

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

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

当输入 URI 时,例如 http://www.mysite.com/article/132/ 重写会进行重定向,但在article.php内部我无法读取$_GET["id"]var_dump$_GET/$_REQUEST 导致空数组

在我拥有的另一台服务器中,该服务器具有mod_php的apache - 一切正常。

我不是 100% 确定 CGI 是原因 - 但我有充分的理由假设如此

谢谢!

这听起来有点像mod_negotiation当你不想的时候把事情搞砸了。尝试将其添加到您的htaccess文件中:

Options -Multiviews

Multiviews选项打开mod_negotiation中的某些内容,该内容试图猜测请求所追求的资源。当它看到 URI /article/something然后看到有一个文件/article.php 时,它假设你的意思是/article.php/something并直接提供它,完全绕过mod_rewrite。