如何通过next.config.js实现仅无参时重定向并添加查询参数?
解决/mypage无参数时自动重定向的问题
问题原因分析
- 第一种配置的问题:
source: '/mypage'会匹配所有路径为/mypage的请求,无论是否带有查询参数,因此/mypage?offer=123这类带参请求也会被强制重定向到目标地址。 - 第二种正则配置的问题:重定向后的目标地址路径仍是
/mypage,仅新增了查询参数,而你的正则/(mypage$)只校验路径部分,导致重定向后的请求再次被匹配,触发无限循环,最终出现“重定向次数过多”的错误。
正确配置方案
使用重定向规则中的has参数,精准匹配不存在offer查询参数的/mypage请求:
{ source: '/mypage', destination: '/mypage?offer=abc', permanent: false, has: [ { type: 'query', key: 'offer', value: '^$' // 匹配offer参数不存在或值为空的情况 } ] }
如果需要严格匹配完全没有任何查询参数的请求,可调整为:
{ source: '/mypage', destination: '/mypage?offer=abc', permanent: false, has: [ { type: 'query', key: '(.*)', value: '^$', negate: true // 否定匹配:不存在任何查询参数 } ] }
配置说明
has数组用于添加额外匹配条件,确保只有符合条件的请求才会触发重定向。- 第一种方案针对“没有
offer参数或offer值为空”的场景,第二种方案严格匹配“无任何查询参数”的请求,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Andres Lopez
相关产品推荐
相关产品推荐

