nginx map regex来检测旧的android浏览器

时间:2015-03-18 00:27:17

标签: regex nginx

我有以下地图nginx设置:

map $http_user_agent $old_browser {
    default 0;
    "~Android [1-2]\." 1;
    "~Mozilla.*Firefox/1[0-9]\." 1;
    "~Chrome/2[0-9]\." 1;
    "~AppleWebKit.*Version/[1-4]\..*Safari" 1;
}   

我想使用此设置重定向旧的Android浏览器,但是在Android 4.2.2上进行测试时,$ old_browser会被标记为1.为什么会这样?

以下是完整的用户代理

Mozilla/5.0(Linux; U; Android 4.2.2; en-us; SM-T110 Build/JDQ39) 
AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

以下正则表达式有什么问题:

"~Android [1-2]\."

为什么它匹配Android 4.2.2

1 个答案:

答案 0 :(得分:1)

匹配:“〜 AppleWebKit *版本/ [1-4] .. * Safari ”1;

Mozilla / 5.0(Linux; U; Android 4.2.2; en-us; SM-T110 Build / JDQ39) AppleWebKit /534.30(KHTML,与Gecko一样)版本/ 4 .0移动 Safari /534.30