Nginx 删除 URL 中的重复参数

Nginx 删除 URL 中的重复参数

我有一个网站,它存在一个令人烦恼的 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 - 根据查询字符串参数重定向

相关内容