hualinux1.12 基础:手机访问www自动从pc版跳转到手机版

需求:

当移动设备用户访问pc端的www.xxx.com,自动跳到移动版本的m.xxx.com

解决:

这个可以使用rewrite规则去实现,结合if判断,但是nginx不支持if..else,可以变换一个实现这个功能。nginx配置如下:

# 检测是不是手机访问,下面的s1-s4访问不跳转到手机网站的

    set $mobile_rewrite p;

    if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {

        set $mobile_rewrite "${mobile_rewrite}p";

    }

    location / {

    # 手机访问PC版页面,则跳转

    if ($mobile_rewrite = pp) {

            rewrite  ^/(.*)$  http://m.xxx.com redirect;

            break;

        }

    }

上面那段配置在

server {

    listen      80;

    listen      443 ssl;

    #ssl on;

    server_name  www.xxx.com xxx.com;

   ...

    #charset koi8-r;

    access_log  /www/logs/nginx/xxx.access.log  main;

    #把location / { }中的root和index放出来

    root  /www/xxx_com;

    index  index.html index.htm;

    #下面写手机判断

}

 

需求二

在上面的基础上,当访问http强制转到https,但手机网站访问www.xxx.com直接跳到m.xxx.com而不是先跳到https再跳到m.xxx.com

解决:

可以把80和443分开来配置

server {

    listen      80;

    server_name  www.xxx.com xxx.com;

    # 检测是不是手机访问

    set $mobile_rewrite p;

    if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {

      set $mobile_rewrite "${mobile_rewrite}p";

    }

    if ($mobile_rewrite = pp) {

            rewrite  ^/(.*)$  http://m.xxx.com redirect;

            break;

        }

    #如果不是手机访问强制性跳转到https

    if  ($mobile_rewrite = p) {

    rewrite ^(.*) https://$server_name$1 permanent;

    }

}

server {

    #listen      80;

    listen      443 ssl;

    ssl on;

    server_name  www.xxx.com xxx.com;

    #by hua

    ssl_certificate  /root/.acme.sh/www.xxx.com/www.xxx.com.cer;

    ssl_certificate_key /root/.acme.sh/www.xxx.com/www.xxx.com.key;

    #charset koi8-r;

    access_log  /www/logs/nginx/xxx.access.log  main;

    root  /www/xxx_com;

    index  index.html index.htm;

location / {

    }

....

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值