2015-03-18 4 views
0

я следующая установка карты 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

+0

В regex '[1-2]' соответствует одному символу в диапазоне от 1 до 2. Он не должен соответствовать 4. – bloodyKnuckles

+0

@bloodyKnuckles Я на самом деле не хочу, чтобы он соответствовал, но что это вместо этого он соответствует ему – adit

ответ

1

Это соответствует: «~ AppleWebKit. * Версия/[1-4] .. * Safari "1;

Mozilla/5.0 (Linux; U; Android 4.2.2; ан-нас, SM-T110 Сложение/JDQ39) AppleWebKit /534.30 (KHTML, как Gecko) Версия/4 +0,0 Mobile Safari /534.30

Смежные вопросы