В этом учебнике показано, как сделать мобильную версию сайта перенаправив пользователей на с мобильных устройств на мобильную версию сайта с использованием mod_rewrite. (на серверах под управлением Apache). В связи со значительным увеличение смартфонов и планшетников, таких как iPhone, iPad, Android телефонов и т.д., Вы возможно рассматриваете возможность создания мобильной версии вашего сайта. Это руководство объясняет, как настроить Apache, запуская мобильную версию вашего сайта если посетитель использует мобильные устройства, и обычную версию при использовании посетителем нормальные настольных ПК. Это может быть достигнуто с изменением модуля Apache.
Предварительные замечания
В этом уроке, мой "нормальный" Web сайт доступен по адресу http://www.example.com и http://example.com , а мой мобильный сайт по адресу http://m.example.com . Эти виртуальные доменов уже существуют в моей системе, так что я не рассказываю, как установить их. Для более подробной информации обращаться на форум.
Включение mod_rewrite
Сначала Вы должны убедиться, что модуль Apache mod_rewrite включен. В Debian / Ubuntu, можно активировать его следующим образом:
|
Потом перезапустите Apache - для Debian / Ubuntu, команда:
|
Настройка Apache для разрешения перезаписи правил в файле .htaccess
Мой "нормальных" веб-сайт www.example.com / example.com имеет виртуальный хост файл конфигурации /etc/apache2/sites-available/www.example.com.vhost и корневым каталогом /var/www/www.example.com/web. А мой мобильный сайт m.example.com имеет виртуальный хост файл конфигурации /etc/apache2/sites-available/m.example.com.vhost и корнем документа /var/www/www.example.com/mobile.
Как сделать мобильный сайт
Я хочу добавить перезаписи правил для каждого сайта в файл .htaccess (хотя это также можно разместить переписать правила непосредственно в виртуальный хост файл конфигурации). Поэтому сначала я должен изменить наши конфигурации виртуальных хостов так, чтобы обе директивы могли содержать .htaccess файлы. Мы можем сделать это со строкой AllowOverride All (что позволяет .htaccess переопределить все настройки конфигурации виртуальных хостов)::
|
[...] <Directory /var/www/www.example.com/web/> AllowOverride All </Directory> [...]
|
[...] <Directory /var/www/www.example.com/mobile/> AllowOverride All </Directory> [...]
Впоследствии перезапустите Apache:
|
Создание правил перезаписи
Теперь давайте создадим правила перезаписи для "нормального" веб-сайта www.example.com/example.com, который будет перенаправлять всех пользователей мобильных устройств для мобильной версии m.example.com - я сосредотачиваюсь на соответствующие устройства Android, Blackberry, googlebot-mobile (Google's mobile search bot), IE Mobile, iPad, iPhone, iPod, Opera Mobile, PalmOS, and WebOS.
/var/www/www.example.com/web/.htaccess файл выглядит следующим образом:
|
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC] RewriteRule ^$ http://m.example.com/ [L,R=302] </IfModule>
Для нашего мобильного сайта m.example.com, правила перезаписи, что перенаправляет всех пользователей, которые не используют мобильные устройства для наших "нормальных" веб-сайтов www.example.com/example.com выглядит следующим образом - я просто отрицаю RewriteCond условие из предыдущего .htaccess файлов:
|
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC] RewriteRule ^$ http://www.example.com/ [L,R=302] </IfModule>
Вот и все! Теперь Вы можете провести испытания, например посетить m.example.com с нормального браузера desktop системы.