任务背景
线上服务器分中英文,使用了MultilingualPress
插件进行跳转。因为其他的BUG,前端的同事在线上服务器运行了git reset --hard
,之前负责的的同事对代码进行的修改并没有commit
,并且他已经离职了。在勉强运行服务之后,运营的同事发现根据浏览器的语言进行跳转的功能失效。
修复过程
首先在本地服务器上构建了一个线上代码的镜像,实现方式是将线上环境的代码压缩之后部署到本地,使用和线上版本一致的lnmp
环境。根据离职的那位同事留下的readme.md
部署成功。
本地测试的时候,没有复现问题。
因为对WordPress
框架不熟悉,于是想通过Nginx
实现跳转,在查找配置文件的时候才发现,线上服务的vhost/www.xxxx.xx.conf
与代码中的不一致,与readme.md
也不一致。
Nginx基于浏览器语言跳转
在浏览器访问服务器的时候,会在请求头中加入Accept-Language
,在nginx
中,这个参数是$http_accept_language
。因此我们判断$http_accept_language
中是否存在zh
字符串,如果有就跳转到中文网站,如果没有就跳转到英文网站(默认英文)。 在vhost/www.xxxx.xx.conf
中添加以下代码:
|
|
Nginx配置踩坑记录
nginx
配置文件中的if
之后必须要有一个空格。nginx
不支持if嵌套,如果需要多个判断,则需要使用参数进行区分。例如,想要请求头中的Accept-Language
包含zh
的同时,$request_uri
中还有lang=zh
的同时才显示中文,那么配置文件如下:
|
|