Next.js 13多语言网站持续重定向至已删除的本地化页面
解决Next.js App Router国际化路由死循环/卡顿问题
核心排查与修复步骤
彻底清理项目缓存与依赖:
执行以下命令完全清除残留缓存,解决跨项目污染问题:rm -rf .next node_modules package-lock.json yarn.lock npm install npm run build修正配置参考错误:
你当前参考的是Pages Router的国际化文档,App Router的配置逻辑完全不同:- 删除
next.config.js中Pages Router专属的i18n配置字段 - 确保路由结构遵循App Router规范:
app/[lang]/page.js(如app/en/page.js、app/zh/page.js)
- 删除
排查中间件重定向逻辑:
死循环几乎都是中间件(middleware.js)的语言检测逻辑错误导致:- 检查是否存在无限重定向:比如未排除已匹配语言前缀的路由,强制跳转到默认语言时连目标路由本身也重复跳转
- 示例错误逻辑:所有请求都重定向到
/en,包括/en路径,导致死循环 - 修正方向:先判断当前路径是否包含有效语言前缀,再执行重定向操作
清空浏览器存储:
部分国际化方案会将语言偏好存在本地存储或Cookie中,残留的旧值可能引发异常跳转。在浏览器开发者工具中清空Local Storage和Cookies,重启浏览器后重试。
验证方法
- 新建一个干净的Next.js App Router项目,仅添加最基础的国际化路由结构
- 启动开发服务测试路由跳转是否正常
- 逐步迁移原有项目的逻辑到新项目,每添加一部分就测试一次,定位出导致死循环的代码块
内容的提问来源于stack exchange,提问作者a0m0rajab
相关产品推荐
相关产品推荐

