NextJs 基于正则表达式的重定向

Dio*_*ixo 4 reactjs next.js

我正在使用 Next.js,并尝试根据一些正则表达式条件和 cookie 重定向到给定路径。

目标是/foo/bar当源没有密钥bar但有给定的 cookie 时进行重定向。

我尝试了几种不同的方法,next.config.js但没有一个有效。

现在我有以下内容

async redirects() {
    return [
      {
        source: '/(^(?:(?!bar).)*$)',
        has: [{
          type: 'cookie',
          key: 'utm_source',
          value: 'bar',

        }],
        destination: '/foo/bar',
        permanent: true
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

该文档相当模糊。

小智 8

我还遇到了正则表达式问题,正在深入研究 next.js 源代码并进行一些调试。我发现不幸的是没有人告诉你 next.js 将你的正则表达式包装在/^(?:\/(你的正则表达式中))$/i

实际上,第一部分 ( \/) 可能取决于您的源属性。但是,如果您删除除实际的“单词正则表达式”之外的所有内容,它应该可以工作:

source: '/(?!bar)',
Run Code Online (Sandbox Code Playgroud)

regexp.source(在getPathMatch()node_modules\next\dist\shared\lib\router\utils\path-match.js中查看)