NGINX如何将带尾部斜杠的URL重定向到非斜杠版本(排除/backend路径)
Nginx尾部斜杠重定向异常修复方案
问题原因
现有配置的异常跳转是因为return指令返回的$1为不带根前缀的相对路径,浏览器处理301跳转时会将相对路径拼接在当前请求路径末尾,因此访问/service/时会错误跳转到/service/service。
修复方案
仅需在返回的路径前补充根斜杠/,将跳转目标指定为绝对路径即可,修改后的配置如下:
server { listen 80; listen 443 ssl http2; [...] location ~ ^/(?!backend)(.+)/$ { return 301 /$1$is_args$args; } [...] }
效果验证
修改后可以完全匹配需求:
https://example.com/service/跳转至https://example.com/servicehttps://example.com/service/one/跳转至https://example.com/service/one- 所有以
/backend开头的URL不会进入该规则,保持原有访问路径不变
内容的提问来源于stack exchange,提问作者Foddy
相关产品推荐
相关产品推荐

