Next.js 带有子域的域路由

fre*_*erk 5 localization routes internationalization reactjs next.js

我正在尝试根据当前子域翻译我的下一个应用程序。例如,我想en.hello.com用英语,并it.hello.com用意大利语。

我正在尝试使用 Next 的域路由来实现这一点,但显然,这并不意味着与子域一起使用,而是与顶级域一起使用,例如英语和意大利语的hello.en和。hello.it

这是我的next.config.js

module.exports = {
  i18n: {
    locales: ["en", "it"],
    defaultLocale: "en",

    domains: [
      {
        domain: "en.hello.com",
        defaultLocale: "en",
      },
      {
        domain: "it.hello.com",
        defaultLocale: "it",
      },
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)

这些设置无法映射en.hello.com到英语和it.hello.com意大利语。

谁能解释一下为什么会这样以及如何在 Next 中实现子域路由?

Jac*_*son 2

您尝试执行的功能似乎不受支持。根据您自己提供的文档,您可以拥有顶级区域设置域(例如).it或子路径(例如)/it。现在我不确定当互联网上的大多数网站都选择子路径时您为什么需要子域。如果您选择子路径,则通过提供Accept-Language: it;q=0.9标头,用户将被自动重定向。

选择

如果您无法使用任一受支持的功能,那么您唯一的其他选择就是创建自定义服务器。这需要做更多的工作,而且您还将失去部署到 vercel 平台的能力。