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

Nginx移除URL末尾斜杠时排除特定URL的配置方法咨询

Nginx移除URL末尾斜杠时排除特定URL的配置方法咨询

嗨,我来帮你搞定这个问题!你的现有配置是针对非目录的URL移除末尾斜杠,现在要让像/bar/、/foo/这类特定路径保留斜杠,有几种实用的实现方式,我给你详细说明:

方法一:用unless简化重写规则

这是最简洁的写法,直接在rewrite指令里加排除条件,不用嵌套if:

if (!-d $request_filename) {
    rewrite     ^/(.+)/$ /$1 permanent unless ($request_uri ~ ^/(bar|foo)/$);
}

简单解释下:

  • unless ($request_uri ~ ^/(bar|foo)/$) 意思是:只有当请求URL不是/bar/或/foo/时,才执行移除末尾斜杠的重写
  • 如果之后要排除更多路径,直接在(bar|foo)里新增就行,比如改成(bar|foo|test|demo)

方法二:用location块优先匹配特定路径

这种方式更贴合Nginx的配置逻辑(尽量避免嵌套if),先单独处理需要保留斜杠的路径:

# 优先匹配需要保留末尾斜杠的路径,直接走正常业务逻辑
location ~ ^/(bar|foo)/$ {
    # 这里替换成你对应这些路径的实际配置,比如root、proxy_pass等
    try_files $uri $uri/ =404;
}

# 处理其他非目录URL的末尾斜杠移除
if (!-d $request_filename) {
    rewrite     ^/(.+)/$ /$1 permanent;
}

小提醒

  • 修改完配置后,一定要用nginx -t命令验证语法是否正确,别直接重启导致服务出错
  • 验证通过后,执行nginx -s reload重新加载配置就能生效啦

备注:内容来源于stack exchange,提问作者peris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:14:51