有个老项目要做中英文切换,原本利用nginx ip地址库识别是否国外IP,以此依据跳到英文版。
现需改造成首次访问利用请求 accept-language: zh-CN,zh;q=0.9 判断,当用户选择中英文时设置cookie,由服务端nginx获取判断,跳转到响应URL。
以下写了简单的demo示例:
server {
listen 8080;
server_name _;
charset utf-8;
default_type text/html;
add_header Content-Type 'text/html; charset=utf-8';
set $first_language $http_accept_language;
if ($http_accept_language ~* '^(.{2}),') {
set $first_language $1;
}
set $lang 'en';
if ($first_language = 'en') {
set $lang 'en';
}
if ($first_language != 'en') {
set $lang 'zh';
}
location / {
if ($cookie_lang = zh) {
return 200 "<h2>zh</h2> $cookie_lang";
}
if ($cookie_lang = en) {
return 200 "<h2>en</h2> $cookie_lang";
}
if ($lang = zh) {
return 200 "<h2>http_accept_language zh</h2>";
}
if ($lang = en) {
return 200 "<h2>http_accept_language en</h2>";
}
return 200 "<h2>default</h2>";
}
}