NextJS 14.2.3中如何在next.config重定向传递正则捕获组?
在Next.js 14.2.3中通过正则分组捕获实现重定向参数传递
完全可以实现,但Next.js的重定向配置不支持直接用原生正则的$1/$2这类反向引用,得用它指定的语法——命名动态参数或正则命名捕获组来传递捕获到的值,以下是对应你需求的可行写法:
场景1:固定路径中的分支匹配
对应你第一个示例的需求,把正则分支改成带约束的命名动态参数即可:
{ source: '/test/try-:type(code|saas)/do-it-:time(today|tomorrow)', destination: '/solution/try-:type/do-it-:time', permanent: true, }
这里:type(code|saas)是带正则约束的命名参数,仅匹配code或saas;:time同理。在destination里直接通过参数名:type、:time引用捕获到的值就行。
场景2:混合通配符与正则捕获
对应你第二个示例的需求,需要用正则命名捕获组提取中间的数字部分:
{ source: '/:start*/youdonotwantme(?<digit>[0-9]?)/:end*', destination: '/:start*/:digit/:end*', permanent: true, }
(?<digit>[0-9]?)是正则命名捕获组,Next.js会自动将捕获到的内容映射为:digit参数,在destination中直接引用即可。另外注意permanent参数是布尔值,不能写成字符串'true',否则会报错。
关键注意点
- Next.js的重定向语法基于
path-to-regexp库,所有正则相关的写法要符合该库的规则,原生正则的反向引用$n不适用。 - catch-all参数(
:start*、:end*)要放在不会导致匹配歧义的位置,避免覆盖其他正则规则。
内容的提问来源于stack exchange,提问作者LCIII
相关产品推荐
相关产品推荐

