NetSago
Вход
Войти

Как присоединиться?
Меню
Главная
События
 Заметки
Статьи
Теги
Поиск
О Проекте
Ссылки
Наше
RSS События по RSS
RSS Заметки по RSS
netsago NetSago
Популярное
Руководство по получению прибыли от Свободных и Открытых Проектов by Джон Эндрюс

Восстановление удаленных текстовых файлов в ФС ext3 by scamelscrud

Заметки — Редирект посетителей на мобильную версию сайта с помощью mod_rew...
Назад в Заметки

Редирект посетителей на мобильную версию сайта с помощью mod_rew...
scofield



Теги: apache mod_rewrite


Редирект посетителей на мобильную версию сайта с помощью mod_rewrite.

Учитывая постоянно растущую популярность смартфонов и планшетов, — таких как iPhone, iPad, устройств на Android, устройств BlackBerry и т.д. — вам пора задуматься о создании мобильной версии вашего сайта. Эта заметка описывает, как настроить Apache так, чтобы он направлял пользователей на мобильную версию, если он использует мобильное устройство; а также на обычную версию, если посетитель использует десктоп.

Вступление


В данной заметке подразумевается, что обычная версия сайта доступна по адресам http://www.example.com и http://example.com, а мобильная — по адресу http://m.example.com.

Включение mod_rewrite


Для начала, стоит убедиться, что модуль Apache mod_rewrite включен. На системах Debian/Ubunru можно включить его следующим образом:
a2enmod rewrite

После этого перезапустите Apache:
/etc/init.d/apache2 restart


Настройка Apache


Файл настроек vhost обычного сайта www.example.com/example.com расположен в /etc/apache2/sites-available/www.example.com.vhost. Корневая директория сайта /var/www/www.example.com/web.

Файл настроек vhost мобильной версии сайта m.example.com расположен в /etc/apache2/sites-available/m.example.com.vhost. Корневая директория сайта /var/www/www.example.com/mobile.

Требуется поместить правила mod_rewrite для каждого сайта в файл .htaccess (хотя, возможно разместить правила непосредственно в файле настроек vhost). Для этого следует сначала отредактировать файлы настроек vhost так, чтобы в обоих файлах .htaccess можно было размещать данные правила. Это можно сделать с помощью строки AllowOverride All (что позволит .htaccess перезаписывать все настройки vhost):
vi /etc/apache2/sites-available/www.example.com.vhost

Отредактировать:
[...]
        <Directory /var/www/www.example.com/web/>
                AllowOverride All
	</Directory>
[...]


Далее:
vi /etc/apache2/sites-available/m.example.com.vhost

Отредактировать:
[...]
        <Directory /var/www/www.example.com/mobile/>
                AllowOverride All
        </Directory>
[...]

После этого необходимо перезагрузить Apache:
/etc/init.d/apache2 restart


Создание правил mod_rewrite


Теперь требуется создать правила mod_rewrite для обычной версии сайта, которые будут направлять всех пользователей мобильных устройств на мобильную версию сайта m.example.com. Следует открыть для редактирования файл /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>

Мобильная же версия сайта должна направлять всех пользователей, которые не используют мобильные устройства, на обычную версию. Для этого сделано обычное отрицание вышеуказанного правила RewriteCond. Поэтому файл /var/www/www.example.com/mobile/.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>


Вот и всё! Теперь, проведя тестирование, можно убедиться, что мобильная версия сайта направляет десктопные браузеры на обычную версию, а та, в свою очередь, направляет пользователей мобильных устройств на мобильную версию.
Язык
English/Английский
Поиск
Расширенный Поиск
Ошиблись?
Если вы обнаружили ошибку на сайте, пожалуйста, сообщите нам о ней.
Посчитали
6 / 781
К нам сегодня зашли 16 роботов. Они хотят убить всех человеков.

Зарегистрированных пользователей: 0
Онлайн: 0

Время генерации: 0.010 с
NetSago.v2.β © [2006;∞)  Neunica