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

如何在Nginx中将带Query String的URL重定向至另一个带Query String的URL?

在Nginx中实现带Query String的URL重定向方案

当然有可行方案啦!在Nginx里实现这种带Query String的URL重定向其实很简单,我给你两种实用的实现方式,你可以根据自己的具体需求来选:

方法一:精准匹配特定路径并传递指定UTM参数

如果你的需求只是针对/bol-con-per-11883820001这个特定路径做重定向,并且只需要保留原URL里的utm_source、utm_medium、utm_campaign这几个参数,那可以在Nginx的server配置块中添加如下代码:

location = /bol-con-per-11883820001 {
    # 提取原URL中的UTM参数,拼接至目标URL后
    rewrite ^ https://www.example.com/camp/homeprincipal/jan-18/storePL?utm_source=$arg_utm_source&utm_medium=$arg_utm_medium&utm_campaign=$arg_utm_campaign permanent;
}

关键细节说明:

  • location = /bol-con-per-11883820001是精准匹配规则,只有当请求路径完全等于这个值时才会触发重定向,避免误匹配其他路径
  • $arg_xxx是Nginx的内置变量,专门用来获取Query String中对应参数的值,比如$arg_utm_source就能拿到原URL里utm_source的参数内容
  • permanent代表返回301永久重定向,适合长期固定的重定向需求;如果只是临时重定向,可以改成redirect(返回302状态码)

方法二:匹配路径前缀并传递所有Query参数

如果你需要匹配类似/bol-con-per-xxxxxx这类带数字后缀的路径,或者想把原URL里所有Query参数都完整传递到目标URL,那可以用正则匹配的方式:

location ~ ^/bol-con-per-\d+ {
    # 将原URL的整个Query字符串追加到目标URL后
    rewrite ^ https://www.example.com/camp/homeprincipal/jan-18/storePL$is_args$args permanent;
}

关键细节说明:

  • location ~ ^/bol-con-per-\d+是正则匹配规则,^表示路径开头,\d+匹配一个或多个数字,这样所有以/bol-con-per-开头且后面跟数字的路径都会被匹配到
  • $is_args是Nginx内置变量:如果原URL带有Query参数,它的值是?;如果没有则为空字符串,用来确保参数拼接的格式正确
  • $args代表原URL的整个Query String,这样就能把所有参数(包括pid、page、query等)都完整带到目标URL中

最后要注意的小事项:

  1. 记得把配置中的https://www.example.com替换成你实际使用的域名,如果是HTTP协议就改成http://
  2. 修改完Nginx配置后,需要重新加载配置才能生效,执行命令:sudo nginx -s reload
  3. 可以用curl命令测试重定向是否生效:
curl -I "https://www.example.com/bol-con-per-11883820001?pid=11883820001&page=1&query=bol+con+per&lang=pt&searchConfigId=58c0312b099ff30013d9df47&utm_source=midway&utm_medium=email&utm_campaign=midwaypljan"

查看返回结果中的Location响应头,确认是否指向了正确的目标URL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:25:22