Apache: Автоматические субдомены

Опубликовано admin в Втр, 12/04/2011 - 10:41

Если необходимо использовать много субдоменов, не обязательно засорять файл конфигурации и описывать каждый субдомен отдельно. Можно настроить Apache так, что каждый каталог будет доступен как субдомен, причем для создания нового субдомена необходимо всего лишь создать новый каталог.

Настройка DNS

В файле описания зоны или в настройках, которые вам предоставляет регистратор домена, создайте новый субдомен с именем '*' (звездочка, без кавычек) и IP веб-сервера, на котором будут находится все субдомены.

Кстати, эти "автоматические" субдомены имеют низкий приоритет по отношению к обычным субдоменам. Если создать субдомен с конкретным именем и указать его на другой IP адрес, то пользователям будет возвращаться этот другой IP.

Настройка Apache

Замечание: Убедитесь, что модуль mod_rewrite подключен.

Добавьте в секцию VirtualHost вашего домена следующие строки:

<VirtualHost *:80>
  DocumentRoot /var/www/example.com
  ServerName example.com
  ... 
 
  ServerAlias *.example.com 
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www.example.com$
  RewriteCond %{HTTP_HOST} ^((.*)\.)example.com$
  RewriteRule ^/(.*) /%2/$1
        
</VirtualHost>

Наведите курсор на подчеркнутый фрагмент, чтобы узнать его значение.

Не забудьте перезагрузить Apache:

# apachectl restart

Все субдомены, кроме www, будут запрашиваться из подкаталогов. С этой конфигурацией также возможно использовать домены нескольких уровней вложенности (например second.first.example.com). В случае, если каталог для запрошеного домена не существует, возвращается стандартная ошибка 404 (Файл не найден).



Wikipedia: Wildcard DNS record - http://en.wikipedia.org/wiki/Wildcard_DNS_record
Apache Module mod_rewrite - http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html



Источник: http://server-tuning.info/apache/auto-subdomains.html

( categories: )