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

如何编写Nginx重定向规则:将未匹配URL跳转到/main/

搞定Nginx重定向的方案

嘿,这个需求很容易实现,你只需要在现有规则之前加一条正则匹配的location规则就行,具体配置我给你写出来:

# 拦截所有非/main/开头的请求,重定向到/main/
location ~ ^/(?!main/) {
    return 302 /main/;
}

# 你的原有规则保持不动
location /main/ {
    root /app/dist;
    try_files $uri /index.html =404;
}

给你拆解下这条规则的细节:

  • ~ ^/(?!main/)是正则匹配的核心:^/匹配所有根路径开头的请求,(?!main/)是「负向前瞻」,意思是排除那些已经以main/开头的路径,刚好符合你要的“非/main/的URL都跳转”的需求。
  • return 302 /main/是临时重定向(HTTP状态码302),如果是正式上线需要永久重定向(比如利于SEO),可以改成return 301 /main/——不过注意301会被浏览器缓存,调试阶段用302更灵活,避免缓存坑。
  • 重点! 这条规则必须放在你原有location /main/的前面!因为Nginx匹配location是有优先级的,正则匹配优先级高于普通前缀匹配,放在前面才能先拦截非/main/的请求,不然原有规则会先匹配/main/的请求,但其他请求可能被默认规则处理,达不到跳转效果。

额外小技巧(按需选择):

如果你想让跳转后保留原来的路径后缀(比如访问/about自动跳转到/main/about,/contact/us跳转到/main/contact/us),可以把重定向规则改成这样:

location ~ ^/(?!main/) {
    return 302 /main$request_uri;
}

这样就完美适配两种不同的跳转需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:21:13