В статье про поддомены и поддиректории мы упомянули о возможности создания поддомена с использованием модуля mod_rewrite вебсервера Apache. Функция, несомненно, полезная как с точки зрения юзабилити, так и со стороны удобства проектирования сайта в целом.
В этой заметке мы расскажем, что же необходимо сделать, чтобы ваш сайт имел возможность использовать такие динамические поддомены.
Область применения динамических поддоменов
Поддомены такого типа применяются для самого разного круга задач: от создания многоязыковой версии сайта, до простого вынесения подразделов портала в самостоятельные минисайты.
Вот примеры использования этого решения:
- На Хабре, динамические поддомены используются для страницы профиля пользователя;
- В большинстве всероссийских досок объявлений, поддомены используются для разделения объявлений по городам;
- Динамические поддомены используют большинство сайто- и блогохостингов, такие как, например, blogspot.com.
Определились с областью использования? Отлично! Перейдем непосредственно к настройке вашего сайта или блога.
Изменяем настройки DNS
Чтобы сервер корректно обрабатывал динамические поддомены, необходимо добавить одну маленькую запись в настройки DNS. Это можно сделать, используя панель управления сервером.
Просто добавьте следующую запись формата A ("A record" в англоязычной версии):
*.site.ru
Здесь необходимо заменить site.ru на имя вашего домена. В качестве IP адреса используйте тот же адрес, что и у основного сайта. Кстати, в некоторых панелях, достаточно в качестве имени записи просто написать * (звездочка), без указания полного имени домена.

Возможно, потребуется некоторое время для того, чтобы DNS записи обновились.
Добавляем алиасы для домена
В качестве следующего шага, нам необходимо указать в конфиге Apache тот факт, что у нашего сайта могут быть поддомены с произвольным именем. Это делается с помощью инструкции ServerAlias примерно так:
Эту строчку необходимо добавить в секцию VirtualHost того домена, для которого мы решили создавать динамические поддомены. Например для этого сайта, эта секция должна выглядеть примерно так:
DocumentRoot /path/to/dir/westseo.ru<br/>
ServerName westseo.ru<br/>
ServerAlias *.westseo.ru<br/>
</VirtualHost>
Внимание! Если вы, наряду с динамическими поддоменами используете их "обычных" коллег, то убедитесь, пожалуйста, что алиас *.site.ru идет после всех алиасов традиционных поддоменов. Например, так:
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>
Перезагрузите ваш вебсервер и продолжим наши доработки. Осталось совсем немного.
Внесение изменений в .htaccess
Добавьте следующие инструкции в начало файла .htaccess
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/>
Разберем этот код поподробнее.
Этот блок включает модуль mod_rewrite и устанавливает базовый URL.
RewriteRule (.*) http://site.ru/$1/ [L,R=301]
Здесь мы указываем вебсерверу, что с поддомена www должен быть выполнен 301-й редирект на домен без www. Это полезно для унификации домена и ссылок на него с точки зрения поисковых систем.
RewriteRule (.*) http://site.ru/$2/$1/ [L]
Основной блок. Он выполняет переадресацию с адреса вида http://seo.site.ru/trust/ на http://site.ru/seo/trust/, для последующей обработки ядром сайта.
Конечно, во всех вышеприведенных примерах необходимо заменить site.ru на адрес вашего сайта.
Успехов в доработке вашего сайта!
Если если вам понравилась эта статья, вы можете подписаться на материалы моего блога через
RSS
email
Twitter
ВКонтакте
эксперт ·
15 июля 2010 г. ·
seo
mod_rewrite















сделай подписку на комментарии по мылу, а то неудобно ответы мониторить :)