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

  

Nginx可以根据不同的浏览器语言配置页面跳转,通过设置配置文件中的"ngx_http_map_module"模块和"ngx_http_rewrite_module"模块来实现。

具体步骤如下:

1.在配置文件中增加"ngx_http_map_module"和"ngx_http_rewrite_module"模块。

  http{
      ...
      # 增加ngx_http_map_module模块
      map $http_accept_language $lang{
          # 简体中文
          ~*zh-cn   cn;
          # 繁体中文
          ~*zh-tw   tw;
          # 英语
          default   en;
      }
      # 增加ngx_http_rewrite_module模块
      server{
          ...
          rewrite ^(.*)$ /$lang$1 break;
      }
  }

2.配置多语言页面。

例如,准备简体中文、繁体中文、英文的页面:index.html、about.html、contact.html。在服务器上创建如下目录:

  /var/www/html/
  |--cn
  |   |--index.html
  |   |--about.html
  |   `--contact.html
  |--tw
  |   |--index.html
  |   |--about.html
  |   `--contact.html
  `--en
      |--index.html
      |--about.html
      `--contact.html

3.配置Nginx转发规则。

例如,当客户端浏览器语言是简体中文(zh-cn)时,访问index.html页面时,Nginx会自动把请求转发到/var/www/html/cn/index.html。

   server{
       listen  80;
       server_name  www.example.com;
       index  index.html;
       root  /var/www/html;

       if ($lang = "cn"){
           rewrite ^/$ /cn/index.html;
           rewrite ^/about$ /cn/about.html;
           rewrite ^/contact$ /cn/contact.html;
       }

       if ($lang = "tw"){
           rewrite ^/$ /tw/index.html;
           rewrite ^/about$ /tw/about.html;
           rewrite ^/contact$ /tw/contact.html;
       }

       if ($lang = "en"){
           rewrite ^/$ /en/index.html;
           rewrite ^/about$ /en/about.html;
           rewrite ^/contact$ /en/contact.html;
       }
   }

4.配置完成后,测试多语言页面跳转。

例如,客户端浏览器语言是简体中文,访问www.example.com/about,Nginx会自动把请求转发到/var/www/html/cn/about.html。

至此,Nginx根据不同浏览器语言配置页面跳转的方法详细攻略就讲解完毕。

示例说明:

假设客户端浏览器语言是简体中文(zh-cn),访问www.example.com/about时,Nginx会自动把请求转发到/var/www/html/cn/about.html。

例如,在服务器上创建如下目录:

/var/www/html/
|--en
|  |--index.html
|  |--about.html
|  `--contact.html
|--tw
|  |--index.html
|  |--about.html
|  `--contact.html
`--cn
   |--index.html
   |--about.html
   `--contact.html

配置Nginx转发规则:

server{
    listen 80;
    server_name www.example.com;
    index index.html;
    root /var/www/html;

    if ($lang = "cn"){
        rewrite ^/$ /cn/index.html;
        rewrite ^/about$ /cn/about.html;
        rewrite ^/contact$ /cn/contact.html;
    }

    if ($lang = "tw"){
        rewrite ^/$ /tw/index.html;
        rewrite ^/about$ /tw/about.html;
        rewrite ^/contact$ /tw/contact.html;
    }

    if ($lang = "en"){
        rewrite ^/$ /en/index.html;
        rewrite ^/about$ /en/about.html;
        rewrite ^/contact$ /en/contact.html;
    }
}

在浏览器中输入网址"www.example.com/about",Nginx会自动把请求转发到"/var/www/html/cn/about.html"。

相关文章