Nginx配置含fl=&fl=查询字符串的URL重定向到指定页面
Nginx 按查询字符串前缀匹配的301重定向配置
原有配置失效原因
- 你使用的
$args = "fl=&fl=*"是精确字符串匹配语法,Nginx的=匹配操作符不支持通配符*,只有查询字符串和fl=&fl=*完全一字不差的时候才会触发规则,自然匹配不到后面带其他参数的请求。
正确配置方案
要实现「无论访问路径是什么,只要查询字符串以fl=&fl=开头就301跳转到指定地址」的需求,用正则前缀匹配判断$args变量即可,将如下规则放在对应站点的server配置块中,和原有配置共存:
if ($args ~ ^fl=&fl=) { return 301 https://example2.com/test123; }
配置说明
- 正则中的
^用于锚定查询字符串的起始位置,只会匹配查询字符串开头就是fl=&fl=的请求,不会误命中参数中间夹带该字符串的场景。 - 该规则不限制请求路径,站点下任意路径的请求只要满足查询字符串前缀要求就会触发重定向,你给出的两个示例URL均能被正确识别跳转。
- 配置修改完成后,先执行
nginx -t校验配置语法无报错,再执行nginx -s reload重载配置即可生效。
内容的提问来源于stack exchange,提问作者Indrajeet kumar
相关产品推荐
相关产品推荐

