Next.js 带有子域的域路由

Posted

技术标签:

【中文标题】Next.js 带有子域的域路由【英文标题】:Next.js domain routing with sub-domains 【发布时间】:2021-02-25 08:02:25 【问题描述】:

我正在尝试根据当前子域翻译我的 Next 应用程序。例如,我希望en.hello.com 使用英语,it.hello.com 使用意大利语。

我正在尝试使用 Next 的 domain routing 来实现这一目标,但显然,这并不意味着与子域一起使用,而是与***域(例如英语和意大利语的 hello.enhello.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",
      ,
    ],
  ,
;

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

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

【问题讨论】:

【参考方案1】:

您尝试执行的操作似乎不是受支持的功能。根据您自己提供的documentation,您可以拥有诸如.it 之类的***语言环境域或诸如/it 之类的子路径。现在我不确定为什么当互联网上的大多数网站都选择子路径时你想要一个子域。如果您选择子路径,那么通过提供Accept-Language: it;q=0.9 标头,用户将被自动重定向。

替代方案

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

【讨论】:

以上是关于Next.js 带有子域的域路由的主要内容,如果未能解决你的问题,请参考以下文章

Next.js - 带有动态路由的浅路由

使用带有 next.js 的反应路由器

在 Next.js 页面中检索子域

#yyds干货盘点# Next.js通配符子域

如何基于 GraphQL API 的 slug 使用 Next.js 进行动态路由?

在带有 TypeScript 的 next.js 中使用 Router 的空安全方式