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

Nginx如何将带空格的两个URL路径重定向到单一目标地址

配置错误原因

  • Nginx的rewrite规则匹配的是解码后的URI,URL编码的%20会被解码为普通空格,你直接在正则里写%20无法匹配到对应路径
  • 正则表达式中包含空格时,如果没有用双引号完整包裹正则,Nginx会把空格识别为参数分隔符,拆分你的正则表达式为多个参数,导致规则本身语法错误无法生效
  • 你写的规则部分末尾加了$严格匹配路径结尾,如果请求带查询参数或者额外路径后缀就会匹配失败
  • 域名中的.没有转义,会被正则识别为通配符匹配任意字符,规则匹配精度不够

正确配置方案

推荐用性能更高的return 301写法,放到对应server块内即可:

location ~* ^/xxxx/xxxx/\shttp://wikipedia\.com/xx {
    return 301 http://midomain.com/yyyy;
}

如果更习惯用rewrite写法,可以用下面的规则:

rewrite "^/xxxx/xxxx/\shttp://wikipedia\.com/xx.*" http://midomain.com/yyyy permanent;

规则说明

  • \s用来匹配解码后的空白字符,对应原URL编码的%20
  • 正则中的.做了转义处理,避免被识别为正则通配符
  • 没有加末尾的$,可以匹配该路径前缀下所有带后缀、带查询参数的请求
  • 用location匹配的执行效率高于rewrite规则,优先推荐使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:36:00