Apache - автоматическое создание поддоменов

Администрирование linux
Ответить
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Apache - автоматическое создание поддоменов

Сообщение ustim »

Имеется Apache на Linux и такая структура каталогов:
/var/www/домен/htdocs
Необходимо что бы сам домен хранился в вышеуказанном каталоге, а все поддомены хранились в каталоге домена, на уровне папки htdocs. А так же ОБЯЗАТЕЛЬНО! работало автоматическое добавление субдомена при создании новой папки. Как такое организовать?
У меня изначально было настроено так и приходилось вручную всегда добавлять новый код:
Изначальный код

Код: Выделить всё

NameVirtualHost *:80
 
<VirtualHost *:80>
        ServerAdmin site@yandex.ru
        ServerName site.ru
        ServerAlias www.site.ru
        DocumentRoot /var/www/site.ru/htdocs
 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
 
<VirtualHost *:80>
        ServerAdmin site@yandex.ru
        ServerName test.site.ru
        ServerAlias www.test.site.ru
        DocumentRoot /var/www/site.ru/test
 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ну и файл hosts, который впоследствии таким и останется

Код: Выделить всё

127.0.0.1 localhost
192.168.1.5 WS01
192.168.1.5 site.ru
192.168.1.5 *.site.ru
Естественно, добавлять вручную код не очень удобно. Все запросы к поддоменам можно обрабатывать с помощью mod_vhost_alias, поэтому активируем его и правим наш VirtualHost:
Окончательный и рабочий код

Код: Выделить всё

<VirtualHost *:80>
        ServerAdmin  site@yandex.ru
        ServerName   site.ru
        ServerAlias  www.site.ru
        DocumentRoot /var/www/site.ru/htdocs

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin site@yandex.ru
        ServerName site.ru
        ServerAlias *.site.ru

        UseCanonicalName Off
        VirtualDocumentRoot /var/www/site.ru/%-3

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ответить