На данный момент у меня (для каждого домена) есть
<VirtualHost *:80>
ServerName exmaple.com
ServerAlias *.example.com
DirectoryIndex index.php index.html
VirtualDocumentRoot /srv/www/example.com/public_html/%0
</VirtualHost>
Но я бы хотел избавиться от необходимости дублировать это для другого домена, сделав что-то вроде этого
<VirtualHost *:80>
ServerName *
ServerAlias *
DirectoryIndex index.php index.html
VirtualDocumentRoot /srv/www/%2+/public_html/%0
</VirtualHost>
% 2 + - это все, кроме поддомена. Возможно ли это…
Если у вас есть только одноуровневые поддомены, это должно работать. Если вы хотите обслуживать все свои страницы через mod_vhost_alias
просто возьми VirtualDocumentRoot
линия из <VirtualHost>
директивы и устраните все ваши <VirtualHost>
директивы.
Подстановочный знак указывать не нужно ServerName
. В любом случае для этого требуется полное доменное имя, поэтому вы все равно не сможете его использовать. Аналогично с ServerAlias
, поскольку VirtualDocumentRoot
заботится о поиске нужных мест для обслуживания страниц, в этом нет необходимости, поскольку Host:
заголовок будет обрабатываться динамически.
Чтение документации на mod_vhost_alias и Динамически настраиваемый массовый виртуальный хостинг должно помочь устранить оставшуюся путаницу.