Virtualhost para subdominio comodín y subdominio estático
-
09-09-2019 - |
Pregunta
Tengo una situación extraña en la que quiero tener las URL. app1.example.com
, example.com
y *.example.com
todos usando un host virtual diferente.Esto es lo que tengo (excluyendo example.com
porque simplemente lo hace más complicado).
<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.El que aparezca primero en la lista gana.¿Cómo puedo alojar un host virtual comodín y uno específico?
Nota:no solo estoy cambiando DocumentRoot
en la configuración, por lo que usando mod_rewrite
cambiar la variable DocumentRoot no lo soluciona.
Solución
<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>
En caso de trabajar. La primera entrada se convertirá en el valor por defecto si no se obtiene una coincidencia explícita. Así que si había app.otherexample.com punto a ella, sería atrapado sea app1.example.com.
Otros consejos
Los comodines solo se pueden utilizar en ServerAlias en lugar de 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
Esto también funciona para https necesitaban una solución para hacer directorios de proyectos ésta lo era. porque no le gusta el cromo no se usa SSL ssl más libre. Aviso: Mi servidor Web es Wamp64 en Windows 10, así que no usaría esta configuración debido a las variables a menos que su uso WAMP.
<VirtualHost *:443>
ServerAdmin test@test.com
ServerName test.com
ServerAlias *.test.com
SSLEngine On
SSLCertificateFile "conf/key/certificatecom.crt"
SSLCertificateKeyFile "conf/key/privatecom.key"
VirtualDocumentRoot "${INSTALL_DIR}/www/subdomains/%1/"
DocumentRoot "${INSTALL_DIR}/www/subdomains"
<Directory "${INSTALL_DIR}/www/subdomains/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>