Pull to refresh

Серверный редирект на мобильную версию сайта

Reading time2 min
Views37K
image
Предлагаю вашему вниманию простое и дешевое (по ресурсам) решение для перенаправления пользователей мобильных устройств на легкую версию сайта. Решение ориентировано на highload сайты, оптимизация которых основана на кешировании гостевых запросов.
Проверка, является ли клиент мобильным устройством, производится веб-сервером nginx и в случае успеха клиент перенаправляется на поддомен или локейшн. Это существенно экономит ресурсы и позволяет добиться большей масштабируемости по сравнение с PHP методами.

Конфигурация для NGINX

Вариант №1. Мобильная версия расположена на поддомене
server{
< … >
if ( $http_user_agent ~* (windows\smobile|windows\sce|iphone|ipod|midp|symbian|series\s60|s60|nokia|аndroid| blackberry) ){
rewrite ^/(.*) m.site.ru$1 permanent;
}

location / {
< … >
}

}


Вариант №2. Мобильная версия открывалась на том же домене
if ( $http_user_agent ~* (windows\smobile|windows\sce|iphone|ipod|midp|symbian|series\s60|s60|nokia|аndroid| blackberry) ){
rewrite ^/(.*)$ /liteversion/$1 last;
}


Определение мобильного устройства по $http_user_agent позволяет с высокой точностью и с минимальными затратами ресурсов отличать мобильных клиентов от обычных ПК.
Так работают Google и Yandex. Вы можете поменять user_agent своего браузера и убедится в этом.

Конечно, я не знаю, как в точности работает алгоритм определения «мобильника» в G и Y. Но я считаю, что он очень похож на элементарное регулярное выражение написанное выше.

Регулярное выражение содержит список вариаций ключевых слов в строке http_user_agent составленный на основе анализа логов нескольких сайтов. Всего проанализировано около 200 000 запросов за сутки, 5% из которых отправлено с мобильных устройств. Это гарантирует высокую вероятность выхождения в списков всех возможных вариантов user_agent мобильных устройств. Ipad я исключил из-за разрешения экрана в 1024х768px.

Надеюсь, моя заметка будет для вас полезной.

Дополнительно

Переключатель User Agent для Моззилы
Расширенный список юзер агентов
Tags:
Hubs:
Total votes 77: ↑68 and ↓9+59
Comments35

Articles