apache - mod_rewrite 不传递查询字符串

标签 apache .htaccess mod-rewrite php

我有一个安装了 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/$_REQUESTvar_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/

相关文章:

.htaccess - 以编程方式在 MAMP Pro 上针对特定页面强制使用 https(不是站点范围且不使用 .htaccess)

php - 为 PHP 设置 Apache 时遇到问题

html - 如何假设网站 URL 末尾的 .html?

java - 在 Java 中使用 Apache POI 读取上标 excel 文本

regex - .htaccess 将 301 重定向到移动目录 - 重定向错误太多

.htaccess - 500 内部服务器错误而不是 404

php - 为什么 Apache RewriteRule 以相同的方式处理 '&' 和 '?'

php - Htaccess : How to get Variable form URL?

apache - htaccess mod_rewrite 未在实时服务器上传递获取变量

php - Ubuntu linux apache2 cronjob 不调用 php 文件