Apache настройка · 2 min read · Nov 26, 2025
Apache2: Как перенаправить пользователей на мобильный или обычный веб-сайт в зависимости от устройства с помощью mod_rewrite

С учетом массового роста смартфонов и планшетов, таких как iPhone, iPad, Android телефоны и планшеты, BlackBerry и т.д., вы могли подумать о создании мобильной версии вашего веб-сайта. Этот учебник объясняет, как настроить Apache для обслуживания мобильной версии вашего веб-сайта, если посетитель использует мобильное устройство, и обычной версии, если посетитель использует стандартный настольный ПК. Это можно сделать с помощью модуля переписывания Apache.
1 Предварительная заметка
В этом учебнике мой “обычный” веб-сайт доступен по адресам http://www.example.com и http://example.com, в то время как мой мобильный сайт называется http://m.example.com. Эти виртуальные хосты уже существуют в моей системе, поэтому я не буду описывать, как их настроить.
2 Включение mod_rewrite
Сначала вы должны убедиться, что модуль Apache mod_rewrite включен. Этот модуль позволяет вам выполнять перенаправление httpd, перенаправление apache и переписывание URL через веб-сервер apache. На Debian/Ubuntu вы можете включить его следующим образом:
a2enmod rewriteПерезапустите Apache после этого - для Debian/Ubuntu команда:
/etc/init.d/apache2 restart3 Настройка 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 (хотя также возможно разместить их непосредственно в файле конфигурации виртуального хоста), чтобы их мог читать веб-сервер apache. Поэтому я сначала должен изменить наши конфигурации виртуальных хостов, чтобы оба файла .htaccess могли содержать директивы переписывания. Мы можем сделать это с помощью строки AllowOverride All (которая позволяет .htaccess переопределять все настройки в конфигурации виртуального хоста, конфигурации сервера):
vi /etc/apache2/sites-available/www.example.com.vhost[...]
AllowOverride All
[...]vi /etc/apache2/sites-available/m.example.com.vhost[...]
AllowOverride All
[...]Перезапустите Apache после этого:
/etc/init.d/apache2 restart4 Создание правил переписывания
Теперь давайте создадим правила переписывания для “обычного” веб-сайта www.example.com / example.com, которые перенаправят всех пользователей мобильных устройств на мобильную версию m.example.com - я сосредоточусь на соответствующих устройствах/агентах пользователей, таких как Android, Blackberry, Googlebot-mobile (мобильный поисковый бот Google), IE Mobile, iPad, iPhone, iPod, Opera Mobile, PalmOS и WebOS.
Файл /var/www/www.example.com/web/.htaccess выглядит следующим образом:
vi /var/www/www.example.com/web/.htaccess
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]
Для нашего мобильного веб-сайта m.example.com правила переписывания, которые перенаправляют всех пользователей, не использующих мобильное устройство, на наш “обычный” веб-сайт www.example.com / example.com, выглядят следующим образом - я инвертировал условие RewriteCond из предыдущего файла .htaccess:
vi /var/www/www.example.com/mobile/.htaccess
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]
Вот и все, мы настроили нашу директиву перенаправления! Теперь вы можете провести некоторые тесты, например, посетить m.example.com с помощью стандартного настольного браузера:
Если все пройдет хорошо, вы должны быть перенаправлены на www.example.com:

Теперь протестируйте с мобильным устройством (я использую здесь телефон Android) и перейдите на www.example.com:

Вы должны быть перенаправлены на m.example.com:

5 Ссылки
- Apache: http://httpd.apache.org/
- Модуль Apache mod_rewrite: http://httpd.apache.org/docs/current/mod/mod_rewrite.html
Get new posts in your inbox
No spam. Unsubscribe anytime.