![Nginx 删除 URL 中的重复参数](https://linux22.com/image/741931/Nginx%20%E5%88%A0%E9%99%A4%20URL%20%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%8F%82%E6%95%B0.png)
我有一个网站,它存在一个令人烦恼的 URL 问题。在页面上找到的页码上,如果您关注一个,它将访问?page=2
,这很好。
如果您随后点击任何后续链接,它不会替换 ,而是?page=2
会附加一个新的。例如:?page=2&page=3
。出于各种原因,我需要将其设为?page=3
并从头开始删除外部参数。
遗憾的是,目前无法在代码中修复此问题,我想知道是否有人曾经通过 NGINX 重写做过类似的事情。
答案1
您无法使用它来修复此问题,rewrite
因为它仅对查询字符串之前的 URI 部分进行操作。
查询字符串包含在$request_uri
和$args
变量中,可以使用带有if
和/或map
指令的正则表达式进行操作。
为了处理您的具体情况,您可以使用:
if ($request_uri ~ ^(.*)[?]page=2&page=(.*)$) { return 301 $1?page=$2; }
有关使用的示例map
,请参见以下答案:Nginx - 根据查询字符串参数重定向