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

Nginx配置location跳转时如何保留原请求的URL查询参数

Nginx重定向保留查询参数配置说明

首次配置丢失参数的原因

Nginx的return指令写固定跳转路径时,默认不会自动拼接原请求的查询参数,你最初的配置:

location = /api/redirects {
  return 301 /api2/redirects;
}

只会强制跳转到固定路径/api2/redirects,所以原请求携带的参数会被直接丢弃。

调整后的配置是标准可行方案

你后续使用的$is_args$args拼接方案是Nginx官方推荐的通用写法,两个内置变量的作用分别是:

  • $args:存储当前请求完整的查询参数字符串,比如原请求携带?param=1&anotherParam=10时,$args的值就是param=1&anotherParam=10
  • $is_args:请求带查询参数时值为?,没有参数时值为空字符串,避免无参数的请求跳转后路径末尾多出多余的?符号

最终生效的完整配置如下:

location = /api/redirects {
  return 301 /api2/redirects$is_args$args;
}

如果是需要跳转到其他域名的场景,写法逻辑完全一致,示例:

location = /api/redirects {
  return 301 https://new-example.com/api2/redirects$is_args$args;
}

测试注意事项

301是永久重定向,会被浏览器长期缓存,测试配置是否生效时建议使用无痕模式、清除浏览器缓存,或者直接用curl命令校验:

curl -I "https://example.com/api/redirects?param=1&anotherParam=10"

查看返回头中Location字段的值是否符合预期即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:00