跨境独立站多语言站点Nginx配置教程
多语言站点的URL结构怎么设计
配置 Nginx 之前,先确定你的多语言路径风格。
最常见的方式是语言前缀,比如 https://yoursite.com/en/ 代表英文、https://yoursite.com/zh/ 代表中文。
Nginx 会根据请求路径的前缀把流量分发到对应语言的网站根目录。
适合零基础:如果你用的是 WordPress 多语言插件(如 WPML、Polylang),或者自定义 PHP 框架,这种前缀方式兼容性最好,搜索引擎也容易理解。
修改Nginx配置文件:添加语言匹配规则
假设你的站点根目录下有两个文件夹:en 和 zh,分别放置不同语言的文件。
下面是一个完整的 Nginx server 配置示例(适用于大多数 Linux 系统,配置文件路径通常是 /etc/nginx/sites-available/你的域名.conf 或 /usr/local/nginx/conf/vhost/你的域名.conf)。
server {
listen 80;
server_name yoursite.com www.yoursite.com;
# 默认语言(访问根域名时跳转到英文)
rewrite ^/$ /en/ permanent;
# 静态资源文件直接访问,不经过语言前缀处理
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff2?|ttf|eot)$ {
root /var/www/html;
expires 30d;
log_not_found off;
}
# 英文站点
location /en/ {
alias /var/www/html/en/;
index index.html index.php;
# 如果需要 PHP 解析,请自行添加 fastcgi_pass
}
# 中文站点
location /zh/ {
alias /var/www/html/zh/;
index index.html index.php;
}
# 其他路径(可选:可返回404或重定向到默认语言)
location / {
return 404;
}
}
关键说明:
rewrite ^/$ /en/ permanent;把根域名/直接 301 跳转到英文首页,避免空目录访问报错。alias必须与location后带斜杠的路径对应,否则报 404。- 静态资源单独匹配并指定根目录,避免 Nginx 错误地把 .css 的请求也解析到语言前缀。
配置完成后,执行 sudo nginx -t 检测语法,然后 sudo systemctl reload nginx(或 service nginx reload)使其生效。
高频避坑与常见问题解答
1. 配置后访问 /en/ 返回 404
- 检查
alias路径是否正确,确保/var/www/html/en/目录存在且有 index 文件。 - 如果
/en/目录下是 PHP 程序,需要额外配置location ~ \.php$并指向正确的 fastcgi 参数。
2. 语言切换后出现重定向循环
- 可能因为你同时配置了
rewrite和try_files,两者冲突。建议只用alias+index,或者只用一个location内的逻辑。 - 检查是否有其他 server 块干扰,可以使用
sudo nginx -T查看完整配置。
3. 静态资源加载失败(图片、CSS 请求 404)
- 确认
location ~* \.(css|js|...)$块里root指向的是文件实际存放的根目录(而不是语言目录)。 - 如果静态资源也分布在各语言文件夹内,可以单独为每个语言 location 添加
try_files $uri $uri/ =404;,并取消上面的通用静态规则。
4. 如何添加新的语言(例如日语 /ja/)
- 服务器上新建
/var/www/html/ja/目录并放好文件。 - 复制上面
location /en/块,将路径改为/ja/和/var/www/html/ja/。 - 重启 Nginx 即可。
验证多语言配置是否生效
执行下面两条命令,观察响应状态码和实际返回内容:
# 测试英文首页
curl -I http://yoursite.com/en/
# 测试中文首页
curl -I http://yoursite.com/zh/
- 返回
HTTP/1.1 200 OK说明正常。 - 访问根域名
http://yoursite.com/应该看到301 Moved Permanently跳转到/en/。
用浏览器打开各语言路径,确认页面渲染正确、图片可加载。
如果你正在搭建跨境独立站,并且需要多语言支持,建议先按照本文步骤在测试环境运行一次,确认配置稳定后再迁移到正式服务器。
遇到异常时优先回看避坑和高频问题部分,大部分新手问题都能在这里找到答案。