Nginx 中应通过静态 location 块为每种语言(如 /en/、/zh/)独立配置 alias 指向对应目录,alias 值须带尾斜杠,配合 try_files 实现 SPA 容错;中文路径可用双引号包裹的原始名称,避免正则 location 与 root 混用。

在 Nginx 中用 alias 支持多语言国际化目录结构,核心不是让 alias 动态识别语言,而是通过 URL 路径前缀(如 /en/、/zh/)显式区分语言,并为每个语言配置独立的 location + alias 块,指向对应语言的真实目录。
按路径前缀静态映射各语言目录
这是最稳定、最推荐的方式。每个语言使用独立的 location 块,alias 指向该语言的物理根目录:
-
确保 location 以斜杠结尾:如
/en/、/zh/,避免路径截断错误 -
alias 值必须带尾部斜杠:如
"/var/www/i18n/en/"、"/var/www/i18n/zh/" - 配合 try_files 实现 SPA 或静态页容错:防止子路由刷新 404
示例配置:
location /en/ {
alias /var/www/i18n/en/;
try_files $uri $uri/ /en/index.html;
}
location /zh/ {
alias /var/www/i18n/zh/;
try_files $uri $uri/ /zh/index.html;
}
location /ja/ {
alias /var/www/i18n/ja/;
try_files $uri $uri/ /ja/index.html;
}
中文目录名直接可用,无需转义
如果语言目录本身含中文(如 /中文/、/日本語/),Nginx 完全支持,只需注意写法:
- alias 值写原始中文路径,并用双引号包裹:
alias "/var/www/i18n/中文/"; - 不要 URL 编码(如
%E4%B8%AD%E6%96%87)或反斜杠转义(如/中文\) - 确保服务器文件系统编码为 UTF-8,且 Nginx 用户(如 www-data)对该目录有
r-x权限
避免正则 alias,优先用静态 location
虽然可以用 location ~ ^/(en|zh|ja)/ 配合 $1 变量实现“动态”映射,但官方不建议在正则 location 中使用 alias,行为不可靠:
- 正则匹配中 alias 的替换逻辑易出错,尤其涉及多级路径时
- 静态 location 更清晰、更易调试、性能无差异
- 语言种类不多(常见 3–10 种)时,显式列出反而更安全
补充:路径与内容一致性要靠前端配合
alias 只负责服务端路径映射,前端资源引用也需匹配:











