apache subdomain virtualhost wildcard-subdomain

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.