在Nginx中,你可以使用$http_accept_language
变量来检测客户端请求中的浏览器语言设置,并根据不同的语言进行页面跳转,以下是一个示例配置,展示了如何根据浏览器语言设置将用户重定向到不同语言版本的页面:
server { listen 80; server_name example.com; # 默认的英语页面 location / { root /usr/share/nginx/html/en; index index.html; } # 根据 $http_accept_language 变量进行跳转 location ~* \.html$ { if ($http_accept_language ~* "^en") { rewrite ^(/.*)$ /$1 permanent; } if ($http_accept_language ~* "^fr") { rewrite ^(/.*)$ /fr$1 permanent; } if ($http_accept_language ~* "^de") { rewrite ^(/.*)$ /de$1 permanent; } # 如果没有匹配的语言,则跳转到默认语言(例如英语) rewrite ^(/.*)$ /en$1 permanent; } }
在这个配置中:
$http_accept_language
是 Nginx 内置的一个变量,用于获取 HTTP 请求头中的Accept-Language
字段。
通过正则表达式匹配不同的语言代码(如en
、fr
、de
),并使用rewrite
指令将请求重定向到相应语言版本的页面。
如果请求没有匹配到任何已知语言,则默认重定向到英语页面。
注意:
1、你需要确保服务器上存在相应的语言版本目录和文件,例如/usr/share/nginx/html/en/
,/usr/share/nginx/html/fr/
,/usr/share/nginx/html/de/
等。
2、这个示例假设你使用的是永久重定向(301),如果需要临时重定向(302),可以将permanent
改为redirect
。
请根据你的实际需求调整配置,并确保测试无误后再部署到生产环境。