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

Nginx配置动态URL重写 解决站点地图XML访问失效问题

解决方案

1. 修正重写规则,补充查询字符串追加支持

你当前的Nginx重写规则缺少和ApacheQSA对应的配置,当原请求携带额外查询参数时会丢失,也可能导致参数传递异常,修改规则如下:

rewrite "^/([^/]+)\.xml/?$" /sitemap.php?p=$1 last qsa;

新增的qsa标志和Apache的QSA作用一致,会将原请求的查询参数和新的p参数合并传递给sitemap.php。

2. 调整重写规则的优先级

Nginx的正则匹配遵循「先写先匹配」的规则,如果你现有配置中存在location ~* \.xml$这类匹配静态XML文件的规则,会优先拦截所有XML请求,导致你的动态重写规则不生效,你可以选择以下任意一种方式解决:

  • 方式一:将上述重写规则直接放在server块下的最顶部,早于所有location块生效
  • 方式二:新增高优先级的独立location处理动态XML请求,放在所有其他正则location之前:
location ~ ^/([^/]+)\.xml/?$ {
    rewrite "^/([^/]+)\.xml/?$" /sitemap.php?p=$1 last qsa;
}

3. 验证PHP参数传递配置

检查处理PHP请求的location块中,是否存在以下配置,确保查询参数能正常传递给$_GET全局变量:

fastcgi_param QUERY_STRING $query_string;

该配置为Nginx处理PHP的默认配置,若被误删需要补充回去。


配置修改完成后,执行nginx -s reload重载配置即可生效。

内容的提问来源于stack exchange,提问作者sooraj s pillai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:08