如何使用 Intlayer 配置基于域名的路由,而不是使用 /[locale]/ 路径?
简短回答
基于域名的路由比基于路径的路由(example.com/[locale]/)更简单,因为你可以跳过所有中间件和路由配置。只需将你的应用部署到每个语言域名,并为每个域名设置一个环境变量。
逐步操作
- 每个域名部署一次(
example.com、exemple.fr、ejemplo.es等)。 - 对于每次部署,设置
LOCALE(以及常用的 Intlayer 环境变量)为该域名应提供的语言环境。 - 在你的
intlayer.config.[ts|js]中将该变量作为defaultLocale引用。
ts
复制代码
复制代码到剪贴板
就是这么简单--对于 Next.js、Vite + React、Vite + Vue 等框架,效果相同。
如果所有域名都指向同一个部署怎么办?
如果所有域名都指向同一个应用包,您需要在运行时检测主机,并通过提供者手动传递语言环境。
对于 Next.js
tsx
复制代码
复制代码到剪贴板
对于 Vue
ts
复制代码
复制代码到剪贴板
请将 getLocaleFromHostname() 替换为您自己的查找逻辑。
更新您的语言切换器
使用基于域名的路由时,切换语言意味着跳转到另一个域名:
ts
复制代码
复制代码到剪贴板
基于域名路由的优势
- 配置更简单:无需配置
intlayerProxy、generateStaticParams、react-router或vue-router - 更好的SEO:每种语言都有自己的域名
- 更简洁的URL:路径中没有语言前缀
- 更易维护:每种语言的部署相互独立