Virtualhost Para Wildcard subdomínio e estático subdomínio
-
09-09-2019 - |
Pergunta
Eu tenho uma situação estranha onde eu quero ter o URLs app1.example.com
, example.com
e *.example.com
todos usando um host virtual diferente. Isto é o que eu tenho (excluindo example.com
porque só torna mais confusa).
<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>
O problema é que eles conflito. Qualquer um está listado primeiras vitórias fora. Como posso acolher tanto um virtualhost curinga e um específico?
Nota:. Eu não sou apenas mudando DocumentRoot
no config, portanto, usando mod_rewrite
para alterar a variável DocumentRoot não corrigi-lo
Solução
<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>
O trabalho deve. A primeira entrada vai se tornar o padrão, se você não obter uma correspondência explícita. Então se você tivesse app.otherexample.com ponto para ele, ele seria capturado seja app1.example.com.
Outras dicas
Os curingas só pode ser utilizado nas ServerAlias ??vez do ServerName. Algo que tinha me perplexo.
Para o seu caso de uso, o seguinte deve ser suficiente
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1/
</VirtualHost>
também há mais informações em https: //www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache
Isso também funciona para https precisava de uma solução para fazer diretórios do projeto era isso. porque o Chrome não gosta não SSL mais usado SSL livre. Aviso: My Web Server é Wamp64 no Windows 10 para que eu não usaria esta configuração causa de variáveis ??a menos que seu usando 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>