Nginx根据不同浏览器语言配置页面跳转的方法_nginx

当我们打开很多网站时,可能大家会发现,它会根据你使用的语言自动判断并跳转到不同的语言界面。例如:Google 也就是你用不同的语言,那么输入Google首页就可以自动转向你使用的语言。在这个网络普及的时代,外贸的主要途径一定是网络。也许你的企业网站既有中文版本,同时也有英文版本(如果你的公司有外贸业务)。那么他们的网站是怎样实现这个功能呢?下面我们来研究下Web服务器的Header,HTTP_ACCEPT_LANGUAGE是服务器所接收的语言,一般来说是服务器的语言。在网站可以看到,firefox在安装多个语言包的时候,会发送多个语言信息,但是首选的肯定是在第一个。

简体和繁体判断

这个功能开启很久了,但直到昨天才发现遗漏了 atom.xml ……

我想根据HTTP首部的 Accept-Language 决定提供简体或繁体的文件。在Chrome中, chrome://settings/languages 可以设定偏好语言,浏览器会据此设置 Accept-Language 首部。较好的处理方式是解析该字段,获取qvalue,根据优先级选取最恰当的语言。但仅用于支持简繁体,我想用取巧的办法:忽略优先级,只要 Accept-Language 里出现了 zh-Hant 、 zh-TW 、 zh-HK 等字样,就返回繁体,否则返回简体。

map $http_accept_language $lang {
 default zhs;
 ~zh-Hant zht;
 ~zh-TW zht;
 ~zh-HK zht;
}

我用Hexo生成网站,源文件用繁体写成。对于 hexo generate 生成得到的 2015-10-06-nginx-accept-language-zhs-zht.html ,用 OpenCC 转换得到简体版本: 2015-10-06-nginx-accept-language-zhs-zht.html.zhs.html 。视情况还需要转换其他一些文件,比如 atom.xml 、 提供“阅读最多文章”功能 的 popular.json 。

# zsh
cd ~/maskray.me/public
opencc -c t2s.json -i atom.xml -o atom.xml.zhs.xml
for i in **/*.html 20*; do # 选择需要简繁体支持的文件
 c=${#${(s/.html/%)i}//[^%]/} # 计算子串`.html`出现次数
 if (( $c <= 1 )); then   # 出现一次的为原始文件,需要转换成简体
 opencc -c t2s.json -i $i -o $i.zhs.html
 fi
done

在Nginx配置文件中指定需要简繁体支持的路由:

location ~ ^/blog/20?? {
 try_files $uri.$lang.html $uri =404;
 add_header Vary Accept-Language;
}

location ~ /atom.xml {
 try_files $uri.$lang.xml $uri =404;
 add_header Vary Accept-Language;
}

location ~ \.json$ {
 try_files $uri.$lang.json $uri =404;
 add_header Vary Accept-Language;
}

# 其他需要简繁体支持的路由

根据http请求头中的accept-language转发到不同的页面:
直接上代码

if ($http_accept_language ~* ^zh){
    set $lang "/index_cn.jsp";
}
if ($http_accept_language !~* ^zh){
    set $lang "/index_en.jsp";
}

location =/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://localhost:8080$lang;
}

测试:
http://www.findmaven.net是一个findjar和findmaven的搜索引擎
浏览器设置(英文)

返回

浏览器设置(中文)

返回

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, 语言
, 跳转
, 配置
nginx配置
nginx 跳转到指定页面、nginx配置404页面跳转、nginx 页面跳转、nginx 指定页面跳转、nginx错误页面跳转,以便于您获取更多的相关知识。

时间: 2024-09-21 13:22:49

Nginx根据不同浏览器语言配置页面跳转的方法_nginx的相关文章

html-Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制

问题描述 Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制

Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制

问题描述 Web开发中局部刷新url地址如何改变,浏览器刷新之后页面跳转控制 如图,我想讲页面做成1,2,3块用div控制,当点击1处的DIV中树枝时同时改变div3的HTML和DIV2 的A处的说明,同时当前sub-bar保持展开状态,当点击浏览器的刷新按钮时控制页面的刷新还展示之前的状态,而不是跳转到初始化界面,该如何做?????请各路大神帮忙,谢谢!!!

三种asp.net页面跳转的方法_实用技巧

第一种方法:response.redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但它可以跳转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护.但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端.需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session.代码如下  using System; using System

servlet中实现页面跳转实现方法

servlet中实现页面跳转实现方法 客户端跳转 // 使用response对象的sendredirect实现客户端跳转 // servlet的doget方法 public void doget(https教程ervletrequest req,httpservletresponse res)     throws servletexception,ioexception {     printwriter out = res.getwriter();     out.println("hell

js中页面刷新和页面跳转的方法总结

.js中cookie的基本用法简介 2009-12-15 js中页面刷新和页面跳转的方法总结 文章分类:Web前端 关键字: javascript js中页面刷新和页面跳转的方法总结 1.history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.forward()返回下一页 4. window.history.go(返回第几页,也可以使用访问过的URL) 例: <a href="javascri

聊聊减少页面跳转的方法

在标签页还没有诞生的时候, 浏览器对关键词的搜索似乎只能另起窗口显示搜索结果.且这些结果页散乱无序,假若再 返回某一页面,就要从桌面一堆窗口里或者一长串任务栏内去翻找,相信现在用惯有标签页浏览器的同学,应该没有谁会愿 意再去用这样的产品.这是一个典型的页面跳转例子,并且散乱无序是用户很头痛的事情.在用户对操作体验越来越重视的 今天,让用户无形中享受我们精心设计的操作体验越发显的重要.通过减少页面跳转,减少用户的重复操作就是其中重要的 一点,下面列举了一些常见的交互展现形式. 1.浮动弹窗 为了避

减少手机页面跳转的方法

在标签页还没有诞生的时候, 浏览器对关键词的搜索似乎只能另起窗口显示搜索结果.且这些结果页散乱无序,假若再返回某一页面,就要从桌面一堆窗口里或者一长串任务栏内去翻找,相信现在用惯有标签页浏览器的同学,应该没有谁会愿意再去用这样的产品.这是一个典型的页面跳转例子,并且散乱无序是用户很头痛的事情.在用户对操作体验越来越重视的今天,让用户无形中享受我们精心设计的操作体验越发显的重要.通过减少页面跳转,减少用户的重复操作就是其中重要的一点,下面列举了一些常见的交互展现形式. 1.浮动弹窗 为了避免跳转页

java servlet 几种页面跳转的方法_java

Servlet: 当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面. 1) redirect 方式 response.sendRedirect("/a.jsp"); 页面的路径是相对路径.sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如: response.sendRedirect("http://www.jb51.net"); 跳转后浏览器地址栏变化. 这种方式要传值出去的话,只能在url中带param

windows中apache 301页面跳转实现方法

实现301页面跳转之前需要对apache配置做下修改如 apache默认是没有开启mod_rewrite模块的, 1,将  代码如下 复制代码 #LoadModule rewrite_module modules/mod_rewrite.so 这一行前面的#号去掉,http.conf的站点目录配置,另一种是空间用户常用的 改为  代码如下 复制代码 LoadModule rewrite_module modules/mod_rewrite.so, 2,将AllowOverride None 改为