Next.js国际化(i18n)路由出现404错误求助
Next.js多语言配置后404问题排查与解决
核心问题:页面结构不符合i18n路由规则
Next.js的国际化路由是将语言前缀作为路径最外层,而非嵌套在业务目录下。你当前pages/language/pt-BR/index.tsx的结构不被路由系统识别,这是导致404的直接原因。
修正步骤
1. 调整页面目录结构
针对/language路径的多语言页面,正确结构应为:
- 默认语言(en-US):
pages/language/index.tsx - 葡萄牙语(pt-BR):
pages/pt-BR/language/index.tsx - 西班牙语(es):
pages/es/language/index.tsx
如果是根路径的多语言页面,则对应pages/index.tsx、pages/pt-BR/index.tsx、pages/es/index.tsx。
2. 确认next.config.js配置有效性
确保配置格式正确,示例:
module.exports = { i18n: { locales: ["en-US", "pt-BR", "es"], defaultLocale: "en-US", localeDetection: false, // 可选,关闭自动检测避免测试干扰 }, };
修改配置后必须重启开发服务器,否则新配置不会生效。
3. 测试正确访问路径
- en-US:
http://localhost:3000/language - pt-BR:
http://localhost:3000/pt-BR/language - es:
http://localhost:3000/es/language
4. 额外排查项
- 检查所有语言页面是否正确导出React组件(必须有
export default语句) - 确认next.config.js中没有自定义rewrites/redirects规则干扰国际化路由
- 若使用Next.js 13+ App Router,需改用
app/[locale]/language/page.tsx结构,且国际化配置方式需适配App Router规范
内容的提问来源于stack exchange,提问作者Luciano Clecio
相关产品推荐
相关产品推荐

