Next JS请求不存在的servcies.json出现404报错及站点无限循环问题
根因说明
Next.js 完成页面首次服务端渲染后,客户端 hydrate 阶段会自动请求对应路由路径的 JSON 数据文件,路径格式为 /_next/data/[构建ID]/[路由路径].json,用于拉取页面预渲染的 props。你当前仅配置了页面路由 /es/servicios 到 /es/services 的重写规则,没有覆盖 Next.js 内部数据请求的路由,因此会请求不存在的 servicios.json 触发 404,后续的异常重试逻辑进而导致站点崩溃、进入无限循环。
修复方案
在 next.config.js 的 rewrites 配置中新增对应 JSON 数据请求的重写规则即可,修改后配置参考如下:
module.exports = { async redirects() { return [ { source: '/', destination: '/es', permanent: false, } ] }, async rewrites() { return [ // 原有页面路由重写规则 { source: '/es/servicios', destination: '/es/services', }, // 新增:适配Next.js内部数据请求 { source: '/_next/data/:buildId/es/servicios.json', destination: '/_next/data/:buildId/es/services.json', }, // 剩余原有规则 // ... ] } }
优化建议
如果你的项目本身有多语言路由需求,建议直接使用 Next.js 内置的 i18n 路由配置搭配页面别名能力实现自定义路径,不需要手动编写重写规则,可避免漏配各类资源路径的兼容性问题。

内容的提问来源于stack exchange,提问作者borjanavarro
相关产品推荐
相关产品推荐

