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

Nginx移除URL末尾斜杠时如何排除指定2个目录?

Nginx 移除末尾斜杠并排除指定目录的正确配置

嘿,我来帮你搞定这个Nginx重定向的问题~你之前碰到的服务器启动报错,根源是rewrite指令里的参数不匹配——当你添加了排除目录的正则断言后,必须明确使用捕获组变量$1,不然Nginx会识别不了参数数量,直接抛出invalid number of arguments错误。

要排除两个目录(比如folder1和folder2),正确的配置应该是这样的:

# 移除URL末尾斜杠,排除指定目录
rewrite ^/(?!folder1|folder2)(.*)/$ /$1 permanent;

给你拆解下这个规则的逻辑:

  • ^/(?!folder1|folder2):这是负向前瞻断言,用来匹配开头不是/folder1/或/folder2/的URL,确保这两个目录的末尾斜杠不会被重定向
  • (.*)/$:捕获除了排除目录之外、以斜杠结尾的路径内容
  • /$1:将捕获到的内容作为重定向目标,自动去掉末尾的斜杠
  • permanent:返回301永久重定向,对搜索引擎SEO更友好

另外要注意,你之前的原配置没加$1能生效算是个特殊情况,但一旦加入了排除目录的正则断言,就必须明确使用$1对应捕获组,不然Nginx会因为参数数量不匹配而启动失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:18:34