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

Foi útil?

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>

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top