Редирект на поддомены с помощью .htaccess

Как вы могли заметить – в блоге появилась полноценная мобильная версия.

http://m.phpbl.ru/

Она легкая, простая, но от этого не менее информативная.
А самое главное – она находится на поддомене.

поддомен мобильной версии m.phpbl.ru

О том как сделать простой редирект на поддомены с помощью .htaccess и пойдет речь.

В начале немного о структуре сайта.
Мобильная версия находилась в папке ROOT_DIR/m/ , и, соответственно, была доступна (да и сейчас доступна) по адресу https://phpbl.ru/m/
Так как обычная версия сайта и правда немного тяжеловата (взять хотя бы фиксированную правую колонку или облако тэгов), я решил всех пользователей мобильных устройств сразу перенаправлять на мобильную версию, и там уже давать им выбор – переходить к полной или нет.

И еще я хотел чтобы это было красиво. Согласитесь, https://phpbl.ru/m/ – такая ссылка не очень радует глаз. И поэтому я решил сделать на отдельном поддомене – http://m.phpbl.ru/

Вначале нужно было разобраться с зоной DNS в домене. Но так как там у меня стоял редирект всех поддоменов на основной домен, то с этим проблем не возникло. даже не пришлось ничего менять

Редирект всех поддоменов на основной домен

Отлично, теперь приступим к настройке .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^m.phpbl.ru$
RewriteCond %{REQUEST_URI} !/m/
RewriteRule ^(.*)$ /m/$1 [L]

В целом все ясно, но давайте разберем подробнее все 3 строки

  1. RewriteEngine – Включает возможность работать с mod_rewrite
  2. RewriteCond – условие. Если HTTP_HOST соответсвует регулярному выражению (в моем случае мобильный URL) то переходим к следующему условию
  3. Условие выполняется только если REQUEST_URI (все что после домена в url) не совпадает с нашей папкой. Согласитесь что m.phpbl.ru/m/ – не слишком хорошо.
  4. А это уже переадресация, если выполнены оба предыдущих условия, в папку m

После этого, в папке m нужно создать .htaccess (если его там еще нет) и вписать в него следующий код

RewriteEngine on

Как видите – все достаточно просто и лаконично. Теперь проверяем.
При переходе по ссылку m.phpbl.ru ссылка меняется на phpbl.ru/m/

Что то пошло не так!

ну да. Сервер просто не может понять что же именно от него хотят. Он знает только домен phpbl.ru, а поддомен m.phpbl.ru для него в новинку.
Надо это исправлять.

nginx

Пожалуй самый просто вариант – в директиву нам просто нужно дописать все необходимые домены

server {
    listen 80;
    server_name phpbl.ru m.phpbl.ru;
....

apache

У apache есть директива ServerAlias.
Если ее нету, то вставьте ее после ServerName

<VirtualHost *:80>
        ServerName phpbl.ru
        ServerAlias m.phpbl.ru
....

Хостинги

В хостингах, если конечно он не какой нибудь самый дешевый или бесплатный, есть возможность создать Алиасы (поддомены, субдомены – названий может быть много).
В него то и нужно вписать свой поддомен

Создание алиаса.

Все. Как видите, получилось не так и сложно.

[Всего голосов: 0    Средний: 0/5]

Добавить комментарий

Ваш e-mail не будет опубликован.