добавить
ссылку в
Email
Fb
подписка
RSS
Twitter
Email
Fb

Создаем динамические поддомены с помощью mod_rewrite

В статье про поддомены и поддиректории мы упомянули о возможности создания поддомена с использованием модуля mod_rewrite вебсервера Apache. Функция, несомненно, полезная как с точки зрения юзабилити, так и со стороны удобства проектирования сайта в целом.

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

Область применения динамических поддоменов

Поддомены такого типа применяются для самого разного круга задач: от создания многоязыковой версии сайта, до простого вынесения подразделов портала в самостоятельные минисайты.

Вот примеры использования этого решения:

  • На Хабре, динамические поддомены используются для страницы профиля пользователя;
  • В большинстве всероссийских досок объявлений, поддомены используются для разделения объявлений по городам;
  • Динамические поддомены используют большинство сайто- и блогохостингов, такие как, например, blogspot.com.

Определились с областью использования? Отлично! Перейдем непосредственно к настройке вашего сайта или блога.

Изменяем настройки DNS

Чтобы сервер корректно обрабатывал динамические поддомены, необходимо добавить одну маленькую запись в настройки DNS. Это можно сделать, используя панель управления сервером.

Просто добавьте следующую запись формата A ("A record" в англоязычной версии):

*.site.ru

Здесь необходимо заменить site.ru на имя вашего домена. В качестве IP адреса используйте тот же адрес, что и у основного сайта. Кстати, в некоторых панелях, достаточно в качестве имени записи просто написать * (звездочка), без указания полного имени домена.

Добавляем DNS запись

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

Добавляем алиасы для домена

В качестве следующего шага, нам необходимо указать в конфиге Apache тот факт, что у нашего сайта могут быть поддомены с произвольным именем. Это делается с помощью инструкции ServerAlias примерно так:

    ServerAlias *.site.ru
multitoolbox syntax highlighter

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

<VirtualHost *:80><br/>
    DocumentRoot /path/to/dir/westseo.ru<br/>
    ServerName westseo.ru<br/>
    ServerAlias *.westseo.ru<br/>
</VirtualHost>
multitoolbox syntax highlighter

Внимание! Если вы, наряду с динамическими поддоменами используете их "обычных" коллег, то убедитесь, пожалуйста, что алиас *.site.ru идет после всех алиасов традиционных поддоменов. Например, так:

<VirtualHost *:80><br/>
    DocumentRoot /path/to/dir/westseo.ru<br/>
    ServerName westseo.ru<br/>
    ServerAlias rating.westseo.ru dict.westseo.ru www.westseo.ru *.westseo.ru<br/>
</VirtualHost>
multitoolbox syntax highlighter

Перезагрузите ваш вебсервер и продолжим наши доработки. Осталось совсем немного.

Внесение изменений в .htaccess

Добавьте следующие инструкции в начало файла .htaccess

RewriteEngine On<br/>
RewriteBase /<br/><br/>

RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]<br/>
RewriteRule (.*) http://site.ru/$1/ [L,R=301]<br/><br/>

RewriteCond %{HTTP_HOST} ^(.+)\.site/? [NC]<br/>
RewriteRule (.*) http://site.ru/$2/$1/ [L]<br/>
multitoolbox syntax highlighter

Разберем этот код поподробнее.

RewriteEngine On<br/>
RewriteBase /
multitoolbox syntax highlighter

Этот блок включает модуль mod_rewrite и устанавливает базовый URL.

RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]<br/>
RewriteRule (.*) http://site.ru/$1/ [L,R=301]
multitoolbox syntax highlighter

Здесь мы указываем вебсерверу, что с поддомена www должен быть выполнен 301-й редирект на домен без www. Это полезно для унификации домена и ссылок на него с точки зрения поисковых систем.

RewriteCond %{HTTP_HOST} ^(.+)\.site/? [NC]<br/>
RewriteRule (.*) http://site.ru/$2/$1/ [L]
multitoolbox syntax highlighter

Основной блок. Он выполняет переадресацию с адреса вида http://seo.site.ru/trust/ на http://site.ru/seo/trust/, для последующей обработки ядром сайта.

Конечно, во всех вышеприведенных примерах необходимо заменить site.ru на адрес вашего сайта.

Успехов в доработке вашего сайта!

Если если вам понравилась эта статья, вы можете подписаться на материалы моего блога через rssRSS или emailemail, а также присоединиться ко мне в twitterTwitter или vkontakteВКонтакте.

Похожее видео
Похожие статьи
* эксперт · Дата 15 июля 2010 г. · seo  mod_rewrite 
RSS подписка Комментарии (5 штук)
Gravatar BOLVERIN 20 июля 2010 г. в 14:04 #
хорошо когда все собрано в одном месте) я когда в вордпресс мю настраивал автосоздание субдоменов очень намучался и проимел весь мозг саппорту)
сделай подписку на комментарии по мылу, а то неудобно ответы мониторить :)
Gravatar Алексей Московский 20 июля 2010 г. в 18:13 #
BOLVERIN, сделаем, не вопрос:)
Gravatar fotex.biz 2 сентября 2011 г. в 14:53 #
А куда прописывать VirtualHost?
Gravatar fotex.biz 2 сентября 2011 г. в 15:24 #
Немного уточню: у меня нет доступа к настройкам сервера, так как сайт расположен на виртуальном хостинге. Сейчас стоит задача организовать несколько субдоменов, которые будут обрабатываться основным движком сайта.
Gravatar MaxDamage 17 ноября 2011 г. в 18:17 #
Есть доменное имя второго уровня razdolnoe.net зарегистрированное на ukrnames.com прикрепил его к динамическому IP с помощью zoneedit.com и dyn.com (dyndns.com) все работает замечательно, НО появилась потребность в создании доменов третьего уровня типа xxx1.razdolnoe.net или xxx2razdolnoe.net, возможно ли как-то прикрутить доменные имена третьего уровня к динамическому IP