Next.js 12重定向问题:如何移除目标URL中的查询参数
解决Next.js中精确URL重定向并移除查询参数的问题
要实现将shop/Paypal?page=2精确重定向到http://localhost:3000/shop/visacard/且不带任何查询参数,你可以参考以下两种正确配置方式:
方法一:通过has匹配精确查询参数+禁用参数传递
在next.config.js中添加如下重定向规则:
module.exports = { async redirects() { return [ { source: '/shop/Paypal', has: [ { type: 'query', key: 'page', value: '2' // 精确匹配page参数值为2的情况 } ], destination: 'http://localhost:3000/shop/visacard/', permanent: false, // 按需设置永久/临时重定向(true为308,false为307) passQuery: false // 核心配置:阻止源URL的查询参数传递到目标URL } ]; } };
你之前的第一种尝试失败,是因为缺少passQuery: false配置——Next.js默认会将源URL的查询参数传递给目标地址,加上这个配置就能彻底移除所有参数。
方法二:使用正则表达式精确匹配完整URL
如果需要更严格的精确匹配(仅针对shop/Paypal?page=2这个特定URL),可以用正则作为source,注意JS字符串中需要双重转义特殊字符:
module.exports = { async redirects() { return [ { source: '/shop/Paypal\\?page=2', // 双重转义?,确保正则能识别为普通字符 destination: 'http://localhost:3000/shop/visacard/', permanent: false, passQuery: false // 同样需要禁用参数传递 } ]; } };
你之前的第二种尝试失效,是因为只做了单次转义(shop/paypal\?page=2),在JS字符串中\?会被解析为单个?,导致正则无法正确匹配带查询参数的URL,改成\\?才能让正则引擎识别出原始的?字符。
内容的提问来源于stack exchange,提问作者mehdi khosrojerdi
相关产品推荐
相关产品推荐

