Задача: на любой запрос от браузера IE 6 и ниже выдать статическую страницу ie6.html<br>Остальным версиям IE выдать то, что просят<br><br>Реализация: проверять строку заголовка HTTP_USER_AGENT<br>location / {<br> if ($http_user_agent ~ "MSIE [4-6]") {<br>
rewrite ^/(.*)$ /ie6.html break;<br> }<br> }<br clear="all"><br>Но столкнулся с такой интересной сложностью: у одного из посетителей стоит IE8, но его постоянно переадресует на ie6.html<br>
<br>Cтрока HTTP_USER_AGENT (по логам) от этого пользователя имеет такой вид:<br>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)<br>
<br>То есть в ней присутствует подстрока "MSIE 6" и одновременно с тем есть подстрока "MSIE 8"<br><br>Я предположил, что регулярное выражение с отрицательным предпросмотром решит проблему.<br>if ($http_user_agent ~ "(?<!MSIE 8)MSIE [4-6]") {<br>
rewrite ^/(.*)$ /ie6.html break;<br>
}<br>Но оно не срабатывает.<br><br>Вот такое выражение в данном случае должно выполнить реврайт на ie8.html<br>if ($http_user_agent ~ "(?<=MSIE\s8)MSIE [4-6]") {<br> rewrite ^/(.*)$ /ie8.html break;<br>}<br>
Оно тоже не срабатывает.<br><br>Как исключить реврайт на ie6.html в такой ситуации?<br><br>-- <br>Павел Волынцев<br><br> E-mail: <<a href="mailto:pavel.volyntsev@gmail.com">pavel.volyntsev@gmail.com</a>><br> ICQ #: 55951947<br>
Mobile Phone #: +7 913 902 4872<br> Skype: pavel.volyntsev<br> WWW: <a href="http://copist.ru/">http://copist.ru/</a> & <a href="http://scripted.in/">http://scripted.in/</a><br><br>