Приведенный выше код имеет правильный синтаксис, но я просто указал неправильный порядок размещения. Итак, правильный ответ - поместить второй вверху над первым.
Ниже пример полной конфигурации:
<VirtualHost *:80>
ServerAlias *.*.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%2/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias *.domain
ErrorLog /tmp/error.log
CustomLog /tmp/access.log combined
VirtualDocumentRoot /var/www/%1/public
<Directory "/var/www">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Apache пропускает / игнорирует тот же субдомен / домен config в порядке возрастания сверху. sub.sub.domain также является частью * .domain, поэтому, если я хочу его настроить, я должен поместить конфигурацию вверху или, если использовать другую конфигурацию файла, использовать меньшее имя номера.
Несколько ServerAlias или ServerName или NameVirtualHostlines выдаст предупреждение «NameVirtualHost *: 80 не имеет VirtualHosts». Apache проигнорирует вторую директиву и будет использовать первую определенную строку NameVirtualHost. Кажется, это происходит, когда вы используете несколько файлов конфигурации виртуального хоста и не понимаете, что вам нужно только один раз определить конкретную строку NameVirtualHost
ссылка
Простое решение но я работаю обходным путем на несколько часов и надеюсь, что это поможет другим людям вроде меня.