nginx 判断移动端还是电脑跳转域名或不同的文件
/ Jan 12, 2021 / 1 min read / 32
经常会遇到这种需求,根据访问终端的不同,来选择跳转不同的内容。一般区分小屏幕移动端和电脑端而区分访问内容。这有两种办法,一种是根据终端跳转域名,还有一种是根据终端访问的文件不同。下边就说下 nginx 对于这两种办法的配置

跳转域名

比如 www.domain.com 是 PC 端网址 而 m.domain.com是移动端网址

server {
    listen   80;
    server_name www.domain.com domain.com;
    root  /data/domain;
    charset utf-8;
    if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ # 跳转判断
        rewrite  ^/(.*)$  http://m.domain.com$uri redirect; # redirect表示302跳转(暂时性转移) 
    }
    index index.html index.htm;
    #...
}

跳转不同的文件

server {
    listen   80;
    server_name www.domain.com domain.com;
    root  /data/domain; #默认PC端访问内容
    charset utf-8;
    if ( $http_user_agent ~* "(Android|iPhone|Windows Phone|UC|Kindle)" ){ # 跳转判断
        root /data/mobile_domain; #移动端访问内容
    }
    index index.html index.htm;
    #...
}