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 restart

3 Настройка 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 restart

4 Создание правил переписывания

Теперь давайте создадим правила переписывания для “обычного” веб-сайта 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 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.