Nginx自动跳转到手机端——区分PC或手机访问不同域名

2019年1月10日 zhangdd 96 0 评论 linux运维

自动跳转到手机端——区分PC或手机访问不同域名

需求

公司有一个项目,需要区分PC端和移动端访问,PC端访问需要跳转到PC端的域名,移动端访问需要跳转到移动端的域名。

实现

利用Nginx的if判断和rewrite重定向实现。

server {
        listen 80;
        server\_name baidu.com;
        if ( $http\_user\_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|
        (UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)
        |(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|
        (LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|
        (PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|
        (iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
        {
            rewrite ^/(.\*)$ http://m.baidu.com/$1 permanent;               
        }
        location / {
            proxy\_pass http://www.baidu.com/;
        }
    }

其实就是根据HTTP_USER_AGENT来做判断,利用Nginx做一个302跳转,如果rewrite语句中的最后一个单词redirect改为permanent,则表示301跳转(永久性转移)。

本文声明: 本文出自张佃栋de博客,转载时请注明出处及相应链接。

永久链接: https://zhangdd.com/113.html

最后编辑: 2019/01/10

©著作权归作者所有