apache - Virtualhost para subdominio comodín y subdominio estático
subdomain wildcard-subdomain (2)
Tengo una situación extraña en la que quiero que las URL app1.example.com
, example.com
y *.example.com
utilicen un host virtual diferente. Esto es lo que tengo (excluyendo example.com
porque simplemente lo hace más desordenado).
<VirtualHost *>
ServerName app1.example.com
ServerAlias app1.example.com
DocumentRoot = /var/www/app1
# Other configuration for this app here
</VirtualHost>
<VirtualHost *>
ServerName wildcard.example.com
ServerAlias *.example.com
DocumentRoot = /var/www/wildcard
# other configuration for this app here
</VirtualHost>
El problema es que entran en conflicto. Cualquiera que esté en la lista primero gana. ¿Cómo puedo alojar un host virtual comodín y uno específico?
Nota: no solo estoy cambiando DocumentRoot
en la configuración, entonces usar mod_rewrite
para cambiar la variable DocumentRoot no lo arregla.
Los comodines solo se pueden usar en ServerAlias en lugar de en ServerName. Algo que me dejó perplejo.
Para su caso de uso, lo siguiente debería ser suficiente
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1/
</VirtualHost>
También hay más información en https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache
<VirtualHost *:80>
DocumentRoot /var/www/app1
ServerName app1.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/example
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/wildcard
ServerName other.example.com
ServerAlias *.example.com
</VirtualHost>
Deberia trabajar. La primera entrada se convertirá en la predeterminada si no obtiene una coincidencia explícita. Por lo tanto, si tuvieras aplio de app.otherexample.com, sería capturado por app1.example.com.