среда
Как автоматически создавать поддомены
Задача: при обращении к поддомену сервер должен отдавать контент из соответствующей поддиректории для заданного VirtualHost.
Есть 2 способа решения задачи, и какой из них лучше – решайте сами.
В любом случае, сначала надо настроить WildCard DNS на домене, иначе ничего работать не будет.
Если Ваш проект хостится у firstvds или у minivds, то при добавлении домена на Ваш аккаунт файл зоны будет выглядеть примерно так:
Чтобы включить WildCard DNS, достаточно в файл зоны добавить всего одну строчку и поменять цифры в serial number зоны. После исправлений файл доменной зоны будет выглядеть так:
Через некоторое время можно попробовать пингануть домены abc.domain.com, asfwsegws.domain.com – доменное имя 3-го уровня должно определяться с тем же IP-адресом, что и доменное имя 2-го уровня.
Вот теперь можно переходить к настройке сабдоменов.
Способ номер 1: вносим изменения в httpd.conf
Выглядит это примерно так:
Перезапускаем apache и все – любая поддиректория, созданная в /home/domain/data/www/domain.com/ будет доступна как поддомен. Это самый правильный вариант создания поддоменов.
Но такой способ не будет работать на виртуалхостингах, поскольку доступ пользователю к httpd.conf никто не даст.
Способ номер 2: поддомены через .htaccess:
В этом случае при обращении к subdomain1.domain.com или к www.subdomain1.domain.com пользователь будет перенаправлен на URL http://www.domain.com/subdomain1/ и он это заметит.
Есть 2 способа решения задачи, и какой из них лучше – решайте сами.
В любом случае, сначала надо настроить WildCard DNS на домене, иначе ничего работать не будет.
Если Ваш проект хостится у firstvds или у minivds, то при добавлении домена на Ваш аккаунт файл зоны будет выглядеть примерно так:
$TTL 3600
domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041702 10800 3600 604800 86400)
;
domain.com. IN NS ns1.minivds.com.
domain.com. IN NS ns2.minivds.com.
domain.com. IN MX 10 mail
domain.com. IN MX 20 mail
domain.com. IN A XXX.YYY.ZZZ.WWW
www IN A XXX.YYY.ZZZ.WWW
ftp IN A XXX.YYY.ZZZ.WWW
mail IN A XXX.YYY.ZZZ.WWW
smtp IN A XXX.YYY.ZZZ.WWW
pop IN A XXX.YYY.ZZZ.WWW
domain.com. IN TXT "v=spf1 a mx ~all"
Чтобы включить WildCard DNS, достаточно в файл зоны добавить всего одну строчку и поменять цифры в serial number зоны. После исправлений файл доменной зоны будет выглядеть так:
$TTL 3600
domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041703 10800 3600 604800 86400)
;
domain.com. IN NS ns1.minivds.com.
domain.com. IN NS ns2.minivds.com.
domain.com. IN MX 10 mail
domain.com. IN MX 20 mail
domain.com. IN A XXX.YYY.ZZZ.WWW
www IN A XXX.YYY.ZZZ.WWW
ftp IN A XXX.YYY.ZZZ.WWW
mail IN A XXX.YYY.ZZZ.WWW
smtp IN A XXX.YYY.ZZZ.WWW
pop IN A XXX.YYY.ZZZ.WWW
* IN A XXX.YYY.ZZZ.WWW
domain.com. IN TXT "v=spf1 a mx ~all"
Через некоторое время можно попробовать пингануть домены abc.domain.com, asfwsegws.domain.com – доменное имя 3-го уровня должно определяться с тем же IP-адресом, что и доменное имя 2-го уровня.
Вот теперь можно переходить к настройке сабдоменов.
Способ номер 1: вносим изменения в httpd.conf
Выглядит это примерно так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain.com
RewriteCond %{HTTP_HOST} !^cgi-bin\.domain\.com$ # запрещаем перенаправление для cgi-bin
RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}domain.com$
RewriteCond /home/domain/data/www/domain.com/%3 -d
RewriteRule ^/(.*) /%3/$1
Перезапускаем apache и все – любая поддиректория, созданная в /home/domain/data/www/domain.com/ будет доступна как поддомен. Это самый правильный вариант создания поддоменов.
Но такой способ не будет работать на виртуалхостингах, поскольку доступ пользователю к httpd.conf никто не даст.
Способ номер 2: поддомены через .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain1.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subdomain1.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/subdomain1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^subdomain2.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subdomain2.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/subdomain2/ [R=301,L]
В этом случае при обращении к subdomain1.domain.com или к www.subdomain1.domain.com пользователь будет перенаправлен на URL http://www.domain.com/subdomain1/ и он это заметит.
Комментарии:
Ссылки на это сообщение:
<< Главная страница
А для совсем ленивых или тех кто не умеет кавырятся в шеле, можно ткнуть один раз мышкой через ISPmanager и получить тотже самый эффект.
Все верно, Wildcard DNS создается в один-два клика в ISPmanager'e.
Но это не спасает от правки .htaccess или httpd.conf для перенаправления серфера в поддиректории.
Но это не спасает от правки .htaccess или httpd.conf для перенаправления серфера в поддиректории.
Автоподдомены кстати ISPmanager научился недавно создавать через mod_vhost_alias, на хостинге FirstVDS.ru работает, включается одной галочкой :)
Просто создаешь папку в www/имя-домена и она видна как папка.домен через браузер.
Просто создаешь папку в www/имя-домена и она видна как папка.домен через браузер.
Верно, так тоже можно.
Осталось только выяснить, что же сильнее нагружает систему, mod_vhost_alias или mod_rewrite. Да и с mod_rewrite мне привычнее работать.
Отправить комментарий
Осталось только выяснить, что же сильнее нагружает систему, mod_vhost_alias или mod_rewrite. Да и с mod_rewrite мне привычнее работать.
Ссылки на это сообщение:
<< Главная страница

