Nginx 页面多国语言处理

Apache 有 mod_negotiation 扩展用于多语言处理。这里不详细探讨 Apache 的配置(下文有简述),只说 Nginx 的处理方式。

例如,存在某 .var 文件,内容如下:

URI: aboutus.html.ru
Content-language: ru
Content-type: text/html; charset=iso-8859-5

URI: aboutus.html.zh-CN
Content-language: zh-CN
Content-type: text/html; charset=utf-16

当客户端不同语言时,返回不同页面。

nginx 中也需要这么做。

FPC 多国语言站点为例子:
fpc.html 为默认页面,fpc.html.zh-CN 为中文页面,以此等等。

mime.types 增加
在 text/html 中 新增,bg en fi fr id it nl po sl ru zh-CN;
用于手动输入这些文件时,可以直接查看。

在 vhost 站点文件中,server 同级添加:
用于设置 $lang 变量,标识访者语言

# set fpc lang
map $http_accept_language $lang {
    default "";
    ~*^en en;
    ~*^fi fi;
    ~*^fr fr;
    ~*^id id;
    ~*^it it;
    ~*^nl nl;
    ~*^pl po;
    ~*^sl sl;
    ~*^ru ru;
    ~*^zh zh-CN;
}

server 内添加,用于 访问 .var 文件时,301 重定向到 .html 文件。

    # fpc site .var rewrite .html
    rewrite "(.*)\.var$" $1.html permanent;

至此完毕。

另外,说下 Apache 的配置,很简单:

1、启用扩展
Apache 配置文件 httpd.conf 中,找到 mod_negotiation.so 并取消注释,以开启扩展。

2、添加 MIME 类型
在 mime.types 文件中,添加一行:

application/x-type-map          var

3、重启 Apache

这样,访客在访问 .var 页面时通过浏览器语言返回不同的页面。

相关链接:
Apache模块 mod_negotiation
nginx之重写
Nginx多语言支持(根据请求携带的语言做跳转)
nginx使用rewrite配置多语言页面
Nginx 一些常用的 URL 重写方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注