Next.js 14.0.1从Pages路由迁移至App路由后部分页面偶现404
排查增量迁移至App路由后偶发404的根因
1. AWS构建/部署的路由优先级冲突
- 检查AWS部署流程中,App路由与剩余Pages路由的静态资源/路由规则生成顺序。混合路由模式下,部分构建工具可能出现旧Pages路由的静态文件覆盖App路由的动态路由条目,或路由匹配规则生成顺序错误,导致请求偶尔匹配到不存在的旧路由规则。
- 查看构建日志,确认每次构建时,App路由的路由清单(如框架的路由配置、AWS Amplify的重写规则)是否被正确生成并覆盖旧规则。偶发问题可能是构建过程中缓存了旧的路由配置,未完全更新。
2. SSR/ISR的缓存不一致问题
- 若使用了服务器端渲染(SSR)或增量静态再生(ISR),检查AWS边缘节点(如CloudFront)与应用服务器的缓存策略。部分页面的ISR缓存可能未正确失效,导致请求获取到过期的路由映射。
- 给迁移后的App路由页面临时设置
Cache-Control: no-cache缓存头,排查是否还会出现404,验证是否为缓存导致的问题。
3. 边缘路由规则的竞态匹配
- 检查AWS CloudFront或负载均衡的路由转发规则。混合路由模式下可能存在规则匹配竞态:部分请求被错误转发到已删除文件的Pages路由静态资源目录,引发404。
- 筛选CloudFront访问日志中出现404的请求,对比请求路径、转发目标,确认是否存在规则匹配错误。
4. 构建工具的增量缓存残留
- 检查AWS构建环境的依赖缓存或构建产物缓存。比如使用Next.js时,
.next目录的增量缓存可能残留旧Pages路由产物,导致部署后部分路由指向不存在的文件。 - 在构建命令中添加强制清理步骤,比如
rm -rf .next && npm run build,排除增量缓存的干扰。
5. 重写/重定向规则的残留
- 检查应用的重写/重定向规则(如框架的
rewrites配置、AWS Amplify的rewrite规则),确认是否存在旧Pages路由的规则未移除,导致请求被重定向到已删除的页面。 - 逐条测试这些规则,确保所有重定向/重写都指向正确的App路由或现有Pages路由。
内容的提问来源于stack exchange,提问作者Tanmay Shah
相关产品推荐
相关产品推荐

