Зі збільшенням кількості смартфонів і планшетів власники сайтів почали створювати окремі мобільні версії сторінок. Щоб користувачеві не доводилося самостійно переходити на потрібну адресу, Apache може автоматично визначати тип пристрою та виконувати перенаправлення.

У цьому прикладі основна версія сайту доступна за адресою `www.example.com`, а мобільна — через піддомен `m.example.com`. Обидва домени та їхні віртуальні хости повинні бути створені заздалегідь.

## Активація модуля mod_rewrite

Спочатку потрібно переконатися, що в Apache увімкнений модуль `mod_rewrite`. У Debian або Ubuntu його можна активувати командою:

```bash
sudo a2enmod rewrite
```

Після цього необхідно перезапустити вебсервер:

```bash
sudo systemctl restart apache2
```

У старіших версіях системи може використовуватися команда:

```bash
sudo /etc/init.d/apache2 restart
```

## Дозвіл правил у файлі .htaccess

За замовчуванням Apache може ігнорувати частину налаштувань, записаних у `.htaccess`. Щоб дозволити використання правил перенаправлення, у конфігурації віртуального хоста потрібно додати директиву `AllowOverride All`.

Для основного сайту налаштування може виглядати так:

```apache
<Directory /var/www/www.example.com/web/>
AllowOverride All
</Directory>
```

Для мобільної версії додається окремий блок:

```apache
<Directory /var/www/www.example.com/mobile/>
AllowOverride All
</Directory>
```

Після зміни конфігурації Apache потрібно повторно перезапустити.

## Перенаправлення мобільних користувачів

У кореневому каталозі основного сайту створюється або редагується файл `.htaccess`. У ньому вмикається механізм перезапису адрес і перевіряється значення `HTTP_USER_AGENT`.

Цей параметр містить інформацію про браузер і пристрій відвідувача.

```apache
<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>
```

Якщо Apache знаходить у назві браузера ознаки мобільного пристрою, користувач перенаправляється на піддомен `m.example.com`.

Прапорець `[NC]` вимикає залежність перевірки від регістру символів. Параметр `[L]` завершує обробку поточного набору правил, а `R=302` виконує тимчасове перенаправлення.

## Повернення користувачів на основний сайт

Для мобільної версії можна створити зворотне правило. Воно перевірятиме, чи не відкрив користувач мобільний піддомен зі звичайного настільного браузера.

У файлі `.htaccess` мобільного сайту додається:

```apache
<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>
```

Знак оклику перед умовою означає заперечення. Тобто правило спрацьовує, якщо браузер не належить до зазначених мобільних пристроїв.

У такому разі відвідувач автоматично повертається на основну версію сайту.

## Перевірка роботи

Після завершення налаштування потрібно перевірити обидва напрямки переходу:

* відкрити основний сайт зі смартфона;
* відкрити мобільний піддомен із комп’ютера;
* переконатися, що сторінки не потрапляють у нескінченний цикл перенаправлень;
* перевірити роботу внутрішніх посилань.

Метод визначення пристрою через `User-Agent` достатньо простий, але список браузерів необхідно періодично оновлювати. Сучасні сайти частіше використовують адаптивний дизайн, однак окрема мобільна версія може залишатися корисною для старих проєктів або спеціальних вебінтерфейсів.