Реврайт для IE6
Павел Волынцев
pavel.volyntsev на gmail.com
Пн Дек 28 12:16:45 MSK 2009
Задача: на любой запрос от браузера IE 6 и ниже выдать статическую страницу
ie6.html
Остальным версиям IE выдать то, что просят
Реализация: проверять строку заголовка HTTP_USER_AGENT
location / {
if ($http_user_agent ~ "MSIE [4-6]") {
rewrite ^/(.*)$ /ie6.html break;
}
}
Но столкнулся с такой интересной сложностью: у одного из посетителей стоит
IE8, но его постоянно переадресует на ie6.html
Cтрока HTTP_USER_AGENT (по логам) от этого пользователя имеет такой вид:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRSPUTNIK 2,
0, 1, 90 HW; MRA 5.6 (build 03278); Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; MRIE8PACK 2.0.1)
То есть в ней присутствует подстрока "MSIE 6" и одновременно с тем есть
подстрока "MSIE 8"
Я предположил, что регулярное выражение с отрицательным предпросмотром решит
проблему.
if ($http_user_agent ~ "(?<!MSIE 8)MSIE [4-6]") {
rewrite ^/(.*)$ /ie6.html break;
}
Но оно не срабатывает.
Вот такое выражение в данном случае должно выполнить реврайт на ie8.html
if ($http_user_agent ~ "(?<=MSIE\s8)MSIE [4-6]") {
rewrite ^/(.*)$ /ie8.html break;
}
Оно тоже не срабатывает.
Как исключить реврайт на ie6.html в такой ситуации?
--
Павел Волынцев
E-mail: <pavel.volyntsev на gmail.com>
ICQ #: 55951947
Mobile Phone #: +7 913 902 4872
Skype: pavel.volyntsev
WWW: http://copist.ru/ & http://scripted.in/
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091228/a2522da3/attachment.html>
Подробная информация о списке рассылки nginx-ru