Next.js Rewrites本地正常,部署到Vercel后失效问题求助
解决Next.js重写规则在Vercel部署后失效的问题
你的需求是通过Next.js的rewrites配置,让访问/sell及/sell/*路径时转发到外部站点www.anotherWebsite.com/sell,本地正常但Vercel部署后失效,可按以下步骤排查修复:
1. 调整重写规则的匹配顺序
Next.js的rewrites规则是按从上到下的顺序匹配,你的原配置中第一条规则/:path*会优先匹配所有路径(包括/sell),导致后面的/sell规则根本不会被触发。
修正后的配置要把/sell相关规则放在最前面:
module.exports = { async rewrites() { return [ // 先匹配/sell相关路径 { source: '/sell', destination: 'https://www.anotherWebsite.com/sell', }, { source: '/sell/:path*', destination: 'https://www.anotherWebsite.com/sell/:path*', }, // 最后匹配其他所有路径 { source: '/:path*', destination: '/:path*', }, ] } }
2. 检查环境变量配置(如果使用NEXT_PUBLIC_APP_URL)
如果坚持用环境变量NEXT_PUBLIC_APP_URL,需确保:
- Vercel项目的环境变量设置中已添加该变量,值为
https://www.anotherWebsite.com(必须带https://,不能有末尾斜杠) - 部署时触发完整构建,确保新的环境变量生效(手动重新部署一次可避免缓存问题)
3. 验证Vercel部署后的规则生效
部署完成后,可通过Vercel项目控制台的Functions→Rewrites查看已生效的重写规则,确认/sell相关规则存在且顺序正确。如果规则未显示,检查next.config.js的语法是否正确(比如是否漏写module.exports =)。
内容的提问来源于stack exchange,提问作者user9783371
相关产品推荐
相关产品推荐

