Next.js defaultLocale创建到同一页面的两条路由,带和不带前缀



根据Next.js的子路径路由文档i8n:

默认区域设置没有前缀。

然而我的问题是,当添加到我的next.config.js:

i18n: {
locales: ['en'],
defaultLocale: 'en',
localeDetection: false,
}

我所有的页面都存在于两个路由下。/en/page/page.这意味着他们的文档是错误的?

也看看这个GitHub问题,似乎人们要求defaultLocale不要有前缀,而是使用default作为黑客来强制前缀,这与我正在发生的事情完全相反。

我是否错过了一些关键的东西,而黑客实际上是我需要的?我能想到的唯一解决方案就是添加这样的重定向,这样两个页面就不会同时存在,但我最终会陷入一个无限循环:

{
"source": "/en/:path*",
"destination": "/:path*",
"permanent": false
}

我在这些版本:

"next": "12.1.5",
"i18next": "^22.4.6",
"next-i18next": "^13.0.2",
"react-i18next": "^12.1.1",

谢谢!

我也遇到过同样的问题,但通过使用区域设置格式"en-US",只有一条路由和另一条404,使其正常工作。而不仅仅是"en"就像这里的文档一样。希望这对你有帮助!

最新更新