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

NextJS条件重定向配置:博客迁移时如何排除特定路径不跳转

问题根源

你当前的配置存在两个问题:

  • NextJS的重定向规则按数组从上到下的顺序匹配,匹配到第一条规则就会直接生效,你把sitemap.xml的豁免规则写在通用重定向规则之后,永远不会触发
  • 第一条/:slug规则过于宽泛,会匹配所有根路径下的单层路径,包括带后缀的静态资源文件

解决方案

用NextJS重定向规则自带的正则匹配能力,给slug参数加匹配约束,直接排除你不需要重定向的路径即可,不需要单独为每个静态资源写豁免规则。

修改后的配置代码

async redirects() {
    return [
      {
        // 仅匹配不带后缀的根路径slug,自动排除所有带.的静态资源(xml/txt/ico/json等)
        source: '/:slug([^.]+)',
        destination: '/blog/:slug',
        permanent: true
      },
      // 如果你还有其他根路径下不需要重定向的页面(比如/about、/contact),可以改成如下规则排除指定路径:
      // source: '/:slug((?!about|contact|sitemap.xml|robots.txt).*)',
    ]
  }

配置说明

  • [^.]+是正则约束,代表slug只能匹配不含.的字符串,自动跳过所有带后缀的静态资源路径(sitemap.xml、robots.txt、favicon.ico等都不会被重定向)
  • 如果有特殊的根路径页面不需要重定向,用(?!xxx|yyy)的排除语法把对应路径加进去即可,不需要单独写多条豁免规则
  • 301重定向是永久重定向,配置生效后建议清理浏览器缓存再测试,避免旧缓存影响结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:06:02