Войти

Показать полную графическую версию : mod_rewrite: правило для браузеров IE 5/6


blacks2
06-02-2010, 21:51
Здравствуйте.

Есть задача:
Нужно через htaccess /modrewrite забанить только IE5 и IE6 (арт проект)
Вчера перелопатил кучу сайтов. Перепробовал много вариантов.
Но ничего толкового не получалось. Тестил на IE7 и IE6.
Обычно банился только IE7 / оба / никто

Тесты были на
1. IEtester + denver
2. http://browsershots.org
3. http://spoon.net/browsers/
(Виртальн машину поставить пока возможности нет)

Вот что пробовал (каждая строчка есть испробованный в-т)


Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} "MSIE 5"
RewriteCond %{HTTP_USER_AGENT} MSIE\ ([56])\.
RewriteCond %{HTTP_USER_AGENT} MSIE\ [^7]
RewriteCond %{HTTP_USER_AGENT} ^.*(MSIE\ [1-6]).*$
RewriteCond %{HTTP:USER_AGENT (MSIE/[56])
RewriteCond %{HTTP_USER_AGENT} (MSIE\ [1-6])
RewriteCond %{HTTP_USER_AGENT} "MSIE [56]"
RewriteRule .* ban.html


Кто может помочь с решением помогите пожалуйста!
Спасибо.

Sham
06-02-2010, 23:43
№2 оставьте (можно без скобок), только добавьте флаг [L] к правилу, иначе может получиться бесконечный цикл.

blacks2
07-02-2010, 01:28
Спасибо Sham Sham, попробовал еще раз указанный вами варинат

1. IEtester
2. http://spoon.net/browsers
- при тесте забанен оба браузера

3. http://browsershots.org/
- забанен только ie6

Где же правда?
+ при тесте с рабочей машины в IE8 сайт был забанен :( - странно ведь в директивах htaccess нет ничего про 8ку

Sham Sham
есть ли у вас возможность проверить работу модреврайта на ie 5 6 7 8 ?


Весия htaccess которую использовал
DirectoryIndex index.html

AddDefaultCharset utf-8
DefaultLanguage ru-RU
AddLanguage ru .ru
AddLanguage en .en
AddLanguage de .de
AddCharset UTF-8 .html .htm .txt .sh .shtml .php .php3
<IfModule mod_charset.c>
CharsetDisable on
CharsetPriority UTF-8 windows-1251 koi8-r ISO-8859-5 ibm866
CharsetDefault utf-8
CharsetSourceEnc utf-8
AddDefaultCharset utf-8
</IfModule>

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} MSIE\ ([56])\.
RewriteRule .* ban.html [L]

Sham
07-02-2010, 03:06
Firefox + User Agent Switcher (https://addons.mozilla.org/ru/firefox/addon/59) для тестирования. Все должно работать.

blacks2
07-02-2010, 07:25
Спасибо Sham!

User Agent Switcher - для IE6 бан как и нужно IE7 и IE8 без бана :)
Но! - почему тогда IE8 установленный на чистую XP отсылается мод реврайтом на бан страницу? :angry2:


Попробовал сервис для проверки заголовков-ответов с сайта http://web-sniffer.net/ - там с бан/не бан работает хорошо
(правда для проверки IE8 нет)

завтра займусь проверкой юзерагента на моем IE8

blacks2
07-02-2010, 20:18
Протестил какие "обманщики" отдают какой заголовок:
Использовал сервис http://www.useragentstring.com/

от "реальных" установленных IE на XP
IE8 - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
IE6 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;

User Agent Switcher
IE8 - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
IE7 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
IE6 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

IEtester
IE8 - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
IE7 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
IE6 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;

spoon.net
IE8 - Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
IE7 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
IE6 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;

http://browsershots.org/
- Для ответа нужно писать скрипт. Но к сожалению пока на это нет времени. Да и в PHP не силен.

Теперь понятно почему у меня банились сразу несколько версий хотя в htaccess предположительно было все правильно.


Sham, люди добрые подскажите как быть?
- получается с "баном через htaccess" могут быть проблемы... или у меня что-то настройками не так?

Sham
07-02-2010, 20:44
Проблема не в самом браузере, а в заголовке User-Agent, который ваш браузер шлет. Если правило срабатывает, то значит заголовок содержит строку 'MSIE 6'.


P.S. Для User Agent Switcher можно отсюда (http://pastebin.com/f384c8a34) скачать (http://pastebin.com/pastebin.php?dl=f384c8a34) полный список строк для разных браузеров и систем.

blacks2
07-02-2010, 21:18
Ок. С виртуальными понятно дело - много чего может запутанно.
Но почему стандартный, нормальный IE8 в заголовке отсылает еще и
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;
?

Sham
07-02-2010, 21:37
имхо заголовок отсылается системный (из реестра), т.е. того браузера, который встроен в систему Windows, а это может быть только одна версия браузера IE.

Вывод такой: при установке IE8 поверх IE6 (или наоборот) в реестре оказалось значение IE6. Наверное, можно исправить (найти нужный ключ поиском по реестру).

blacks2
07-02-2010, 21:53
Вывод такой: при установке IE8 поверх IE6 (или наоборот) в реестре оказалось значение IE6. Наверное, можно исправить (найти нужный ключ поиском по реестру). »

Получается пользователь установивший таким способом новый ослик попадет в бан :/ !?
Никтож спецом не будет править реестр...

mar
08-02-2010, 10:33
blacks2,
скорей всего получается. Но банить по User-Agent, по-моему изначально неправильная идея.




© OSzone.net 2001-2012