Actualmente, he trabajado en la configuración de subdominios comodín como se muestra a continuación:
<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>pero si ingreso sub.sub.domain regresará al vhost predeterminado. ¿Cómo configurar la ruta del dominio principal/raíz? Intenté debajo de conf pero aún no funcionó:
<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>Cambié %2 a %1 y todavía no funciona.
¿Qué es la sintaxis correcta?
El código anterior tiene la sintaxis correcta, pero lo puse en el orden de ubicación incorrecto. Entonces, la respuesta correcta es poner el segundo en la parte superior sobre el primero.
Debajo del ejemplo de configuración completa:
<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 está omitiendo/ignorando la misma configuración de subdominio/dominio en orden ascendente desde la parte superior. sub.sub.dominio también es parte de *.dominio, por lo que si quiero configurarlo, debo poner la configuración en la parte superior o si uso una configuración de archivo diferente, use un nombre de número más bajo.
Múltiples ServerAlias o ServerName o NameVirtualHostlines generarán una advertencia de "NameVirtualHost *:80 no tiene VirtualHosts". Sin embargo, Apache ignorará la segunda directiva y usará la primera línea NameVirtualHost definida. Esto parece suceder cuando uno usa múltiples archivos de configuración de host virtual y no entiende que solo necesita definir una línea NameVirtualHost particular una vez
Solución simple, pero lo soluciono durante algunas horas y espero que ayude a otras personas como yo.