среда, 12 января 2011 г.

Проверка версии браузера с помощью htaccess

Постановка задачи: 
Необходимо перенаправлять пользователей, которые используют устаревшие браузеры на специальную информационную страницу.

Решение: 
Такая задача возникает, если вы отказываетесь поддерживать старые версии браузеров и тратить на них время. Создаем html страницу, на которой выводим информацию, о том, что браузер пользователя устарел, и новую версию можно скачать перейдя по ссылке(ам).

Задачу можно решить с помощью javascript (пример реализации использует jquery), создаем javascript файл и подключаем его в главный шаблон сайта:

jQuery(document).ready(function(){
  if(jQuery.browser.msie && jQuery.browser.version < 7){
    location.href("update-browser.html");
  }
});


Тут проверка проводится для ИЕ6, но не составит труда дописать проверку для других браузеров.

В таком подходе есть негативная сторона - необходима поддержка javascript, небольшая задержка на его выполнение и дополнительный редирект на инфо-страницу. Для избежания всего этого можно осуществлять проверку на уровне Апача, в правилах htaccess.

Пример:

RewriteCond %{HTTP_USER_AGENT} MSIE\ ([56])\.
RewriteRule !\.(css|png|js|gif)$ update-browser.html [L]

С первой строкой все ясно: тут определяем версию ИЕ. Вторая строка заставляет редиректить пользователся на страницу с информацией во всех случаях, кроме тех когда загружаются картинки, стили и скрипты. Если не исключать такие файлы по маске - тогда никогда не подгрузится оформление страницы update-browser.html.

Для остальных браузеров похожие правила:

RewriteCond %{HTTP_USER_AGENT} Firefox/2.* # Firefox > 2
RewriteCond %{HTTP_USER_AGENT} Safari/[0-3] # Safari > 3
RewriteCond %{HTTP_USER_AGENT} Opera/[0-9] # Opera > 9
...

1 комментарий: