Aug
20th

Как создать 100 сабдоменов за 10 минут

Files under Хостинг | Posted by admin

Иногда возникает необходимость создания нескольких сотен поддоменов. На ручное создание потребуется много времуни.., но есть способ сделать все намного проще и быстро.

Для того чтобы все заработало правильно, нам нужно будет три вещи:
1. настроить зону в named
2. настроить вхост в apach
3. сделать правило через mod_rewrite

1. Первым делом нам нужно добавить “A” запись в фаил зоны:
* 14400 IN A 192.168.0.1
Где * будет означать, что запись будет резолвить абсолютно любой поддомен, 14400 время обновления зоны и 192.168.0.1, это ip адрес куда будут направленны поддомены.

Note: Стоит учитывать что named обрабатывает записи последовательно и любая запись добавленная после * не будет обработана.
2. Теперь переходим к конфигурировании веб сервера. Тут все проще, достаточно добавить директиву ServerAlias и все будет работать.
ServerAlias *.domen.com

Где * будет означать что вхост обрабатывает все поддомены и все они будут направлены в один и тот же DocumentRoot, а domen.com это наш домен.

Note: Апач так же как и named читает конфигурационный фаил последовательно, поэтому любой поддомен добавленный ниже не будет обработан сервером.

3. Нам осталось создать правила mod_rewrite чтобы поддомен был направлен в папку домена. Создаем .htaccess следующего содержания:

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^(www\.)?domen\.com$ [NC]
RewriteCond %{HTTP_HOST}—%{REQUEST_URI} ^([^\.]+)\.domen\.com—/([^/]+)? [NC]
RewriteCond %1—%2 !^(.*)—\1$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1/ -d
RewriteRule ^(.*)?$ %1/$1 [QSA,PT]

Теперь любая папка например http://domen.com/papka1/ будет доступна по адресу http://papka1.domen.com/
Но такой вариант не всегда приемлем, и иногда нужно чтобы поддомены находились в вложенной папке скажем в http://domen.com/sub/papka1/. Для этого делаем другой .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domen\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.domen\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/sub
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.domen\.com(.*) /sub/$1$2
RewriteRule ^sub\.(.*) /sub/$1

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

Post a Comment