Область применения динамических поддоменов
Поддомены такого типа применяются для самого разного круга задач: от создания многоязыковой версии сайта, до простого вынесения подразделов портала в самостоятельные минисайты.
Вот примеры использования этого решения:
- На Хабре, динамические поддомены используются для страницы профиля пользователя;
- В большинстве всероссийских досок объявлений, поддомены используются для разделения объявлений по городам;
- Динамические поддомены используют большинство сайто- и блогохостингов, такие как, например, blogspot.com.
Определились с областью использования? Отлично! Перейдем непосредственно к настройке вашего сайта или блога.
Изменяем настройки DNS
Чтобы сервер корректно обрабатывал динамические поддомены, необходимо добавить одну маленькую запись в настройки DNS. Это можно сделать, используя панель управления сервером.
Просто добавьте следующую запись формата A ("A record" в англоязычной версии):
*.site.ru
Здесь необходимо заменить site.ru на имя вашего домена. В качестве IP адреса используйте тот же адрес, что и у основного сайта. Кстати, в некоторых панелях, достаточно в качестве имени записи просто написать * (звездочка), без указания полного имени домена.
Возможно, потребуется некоторое время для того, чтобы DNS записи обновились.
Добавляем алиасы для домена
В качестве следующего шага, нам необходимо указать в конфиге Apache тот факт, что у нашего сайта могут быть поддомены с произвольным именем. Это делается с помощью инструкции ServerAlias примерно так:
ServerAlias *.site.ru
Эту строчку необходимо добавить в секцию VirtualHost того домена, для которого мы решили создавать динамические поддомены. Например для этого сайта, эта секция должна выглядеть примерно так:
<VirtualHost *:80>
DocumentRoot /path/to/dir/westseo.ru
ServerName westseo.ru
ServerAlias *.westseo.ru
</VirtualHost>
Внимание! Если вы, наряду с динамическими поддоменами используете их "обычных" коллег, то убедитесь, пожалуйста, что алиас *.site.ru идет после всех алиасов традиционных поддоменов. Например, так:
<VirtualHost *:80>
DocumentRoot /path/to/dir/westseo.ru
ServerName westseo.ru
ServerAlias rating.westseo.ru dict.westseo.ru www.westseo.ru *.westseo.ru
</VirtualHost>
Перезагрузите ваш вебсервер и продолжим наши доработки. Осталось совсем немного.
Внесение изменений в .htaccess
Добавьте следующие инструкции в начало файла .htaccess
RewriteEngine On
RewriteBase /RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
RewriteRule (.*) http://site.ru/$1/ [L,R=301]RewriteCond %{HTTP_HOST} ^(.+)\.site/? [NC]
RewriteRule (.*) http://site.ru/$2/$1/ [L]
Разберем этот код поподробнее.
RewriteEngine On
RewriteBase /
Этот блок включает модуль mod_rewrite и устанавливает базовый URL.
RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
RewriteRule (.*) http://site.ru/$1/ [L,R=301]
Здесь мы указываем вебсерверу, что с поддомена www должен быть выполнен 301-й редирект на домен без www. Это полезно для унификации домена и ссылок на него с точки зрения поисковых систем.
RewriteCond %{HTTP_HOST} ^(.+)\.site/? [NC]
RewriteRule (.*) http://site.ru/$2/$1/ [L]
Основной блок. Он выполняет переадресацию с адреса вида http://seo.site.ru/trust/ на http://site.ru/seo/trust/, для последующей обработки ядром сайта.
Оригинал - http://westseo.ru/mod-rewrite-subdomain/