Nginx自动跳转到手机端——区分PC或手机访问不同域名
自动跳转到手机端——区分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跳转(永久性转移)。