You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么特定URL的GET参数无法从Nginx转发到PHP?

解决部分URL无法获取PHP $_GET参数的问题

服务器此前运行正常,未修改NGINX/PHP配置,但出现部分URL无法通过$_GET获取参数的情况:

  • 正常URL:/news/rapido-news?pid=123,可正常获取pid参数
  • 异常URL:/news/amazon-aws-services?pid=432,$_GET为空,新增参数也无效

问题根源

查看你的NGINX配置,问题出在末尾斜杠移除的rewrite规则:

rewrite ^/((?!blackfridaysale)(?!cybermondaysale)(?!review-competition).*)/$ /$1 permanent;

当用户访问带末尾斜杠的URL(如/news/amazon-aws-services/?pid=432)时,该规则会将URL重写为不带斜杠的版本,但未保留查询参数,导致重定向后的URL丢失?pid=432,最终PHP无法获取$_GET参数。

而正常的URL大概率是用户直接访问了不带末尾斜杠的版本,未触发该rewrite规则,因此参数保留完整。


解决方法

修改rewrite规则,在结尾添加?$args以自动携带原查询字符串:

rewrite ^/((?!blackfridaysale)(?!cybermondaysale)(?!review-competition).*)/$ /$1?$args permanent;

$args是NGINX内置变量,会完整保留原URL的查询参数,确保重定向后参数不丢失。


额外检查项

  1. 确认fastcgi_params文件中存在以下配置(默认配置已有,若被误改会导致参数无法传递给PHP):
    fastcgi_param QUERY_STRING $query_string;
    
  2. 用浏览器开发者工具查看异常URL的网络请求链路,确认是否存在其他未察觉的重定向导致参数丢失。

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:00:45