Как сделать мобильный редирект

Обратите внимание

Если вы используете WordPress или Joomla, вы можете воспользоваться специализированными плагинами для мобильного редиректа.
Google, рекомендует не использовать мобильный редирект вовсе (имеется ввиду не делать отдельный домен/поддомен для мобильного сайта), а сделать адаптивную верстку сайта.

Редирект при помощи .htaccess файла

RewriteEngine On
# Проверка mime типов, которые обычно поддерживаются мобильными устройствами
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ http://m.domain.com%{REQUEST_URI} [R,L]

 RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
 RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
 RewriteRule ^(.*)$ http://mobile.mydomain.com/$1 [L,R=302]

PHP редирект

Редирект на мобильный сайт Используйте для определения мобильного устройства специальную библиотеку Mobile Detect, реализация есть практически для всех фреймворков и CMS (Репозиторий на GitHub)

<?
// пример работы библиотеки Mobile Detect require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;
if ( $detect->isMobile() ) {// код}
if ( $detect->isTablet() ) {// код}
if ( $detect->isiOS() ) {// код}
if ( $detect->isAndroidOS() ) {// код}
?>

Как видите, можно определять не только мобильное устройство или таблетку/планшет, но и операционную систему.

Серверный редирект(регулярное выражение)

Проверка, является ли клиент мобильным устройством, производится веб-сервером 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 позволяет с высокой точностью и с минимальными затратами ресурсов отличать мобильных клиентов от обычных ПК.

JavaScript редирект

<script type="text/javascript">
if (screen.width <= 480) {
window.location = "http://m.domain.com";
}
</script>

мы определяем тип устройства по его разрешению (ширине экрана в данном случае). 480px, это типичное максимальное разрешение для Iphone или Android устройств.

Прокрутить вверх