Реврайт для 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 было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091228/a2522da3/attachment.html>


Подробная информация о списке рассылки nginx-ru