我有一个安装了 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"]
(来自 $_GET
/$_REQUEST
的 var_dump
结果为空数组
在我拥有的另一台服务器上,它有 apache 和 mod_php - 一切正常。
我不能 100% 确定 CGI 是造成这种情况的原因 - 但我有充分的理由这么认为
谢谢!
最佳答案
这听起来有点像 mod_negotiation 在你不希望的时候把事情搞砸了。尝试将其添加到您的 htaccess 文件中:
Options -Multiviews
Multiviews
选项会打开 mod_negotiation 中的某些内容,该内容会尝试猜测请求所针对的资源。当它看到 URI /article/something
并发现有一个文件 /article.php
时,它会假设您的意思是 /article.php/
并直接提供该服务,完全绕过 mod_rewrite。
关于apache - mod_rewrite 不传递查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19715478/