Angular 12多语言Nginx部署是否需修改路由添加语言标识?
结论
不需要修改现有路由添加langId变量,只要各语言版本的index.html配置了正确的base href,就可以正常工作,无需调整路由代码。
原因说明
- 你当前采用的是Angular i18n官方推荐的「按语言独立构建应用包」的部署模式,
en/es/vt三个目录下各是一套独立的Angular应用实例,不是单应用内通过路由参数动态切换语言的方案,不需要在路由里加语言标识参数。 - 只要你构建各语言包时指定了对应前缀的baseHref,比如英文包构建时添加参数
--base-href /en/、西语包为--base-href /es/,对应生成的index.html里会自带<base href="/en/">这类配置。Angular路由匹配时会自动忽略base href指定的前缀部分,仅拿前缀之后的路径做匹配:比如用户访问/en/shipping时,路由实际匹配的路径是shipping,和你现有路由配置完全匹配。 - 只有当你用「单应用包运行时动态切换语言」的方案时,才需要在路由根路径加
langId参数做匹配,你的部署模式完全不需要这种改造。
补充注意事项
你只需要调整Nginx配置满足两个规则即可:
- 路径前缀匹配:
/en/开头的请求指向dist/en目录、/es/开头的请求指向dist/es目录,以此类推 - 配置SPA路由兜底:各语言路径下的请求都fallback到对应目录的
index.html,避免用户手动刷新路由时出现404
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

