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

Nginx配置301重定向:旧子目录及带参地址转网站根目录

Nginx 301重定向保留查询参数的解决方案

你当前的正则location规则仅能处理无参数的地址,核心问题是return 301 /$1不会自动携带原请求的查询参数(即URL中?之后的部分),导致带参数的旧链接跳转后丢失参数,触发404错误。以下是两种可行的解决方案:

方案一:合并匹配/s/和/sc/前缀

通过正则分组同时匹配两个子目录,一次性处理所有跳转,同时完整保留查询参数:

location ~* ^/(s|sc)/(.*) {
    return 301 $scheme://$host/$2$is_args$args;
}

参数说明:

  • ^/(s|sc)/(.*):匹配所有以/s/或/sc/开头的请求路径
  • $scheme:自动获取当前请求的协议(http/https)
  • $host:自动获取当前请求的域名
  • $2:对应正则中第二个捕获组,即/s/或/sc/之后的路径部分
  • $is_args:如果原请求带查询参数则返回?,否则为空
  • $args:完整保留原请求的所有查询参数

方案二:分开配置两个子目录

如果后续需要对/s/和/sc/设置不同规则,可在原有规则基础上添加参数保留逻辑:

location ~* ^/sc/(.*) {
    return 301 /$1$is_args$args;
}

location ~* ^/s/(.*) {
    return 301 /$1$is_args$args;
}

注意事项

  • 修改配置后需重载Nginx生效:sudo nginx -s reload
  • 301为永久重定向,浏览器会缓存跳转规则,测试时建议使用隐私窗口或清除缓存
  • 正则中的(.*)会捕获路径中除换行外的所有字符,兼容带特殊字符的旧链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:57:03