<VirtualHost *:80>
ServerAlias *.mainsite.com
...
...
</VirtualHost>
Deve pegar qualquer coisa que não esteja definida de outra forma.
Aqui está minha configuração atual:
Na parte inferior de httpd.conf
, tenho o seguinte:
NameVirtualHost *:80
Include /etc/httpd/conf/vhosts/*
Dentro de /etc/httpd/conf/vhosts
eu tenho os seguintes arquivos:
mainsite.com.conf:
<VirtualHost *:80>
DocumentRoot "/var/www/vhosts/mainsite.com"
ServerName mainsite.com
ServerAlias www.mainsite.com
<Directory "/var/www/vhosts/mainsite.com">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
sub1.mainsite.com.conf:
<VirtualHost *:80>
DocumentRoot /var/www/vhosts/sub1.mainsite.com
ServerName sub1.mainsite.com
<Directory "/var/www/vhosts/sub1.mainsite.com">
allow from all
Options -Indexes
</Directory>
</VirtualHost>
Por enquanto, tudo bem! mainsite.com
e www.mainsite.com
ambos compartilham o mesmo DocumentRoot
(e com algum redirecionamento depois eu posso redirecionar todos os www.mainsite.com
usuários para mainsite.com
para SEO). sub1.mainsite.com
também tem seu próprio DocumentRoot
e não interfere em mais nada.
No entanto, <Anything that isn't www or sub1>.mainsite.com
recebe o mesmo DocumentRoot
que mainsite.com
e www.mainsite.com
get. Em vez disso, prefiro uma página de erro para qualquer host que não corresponda a VirtualHost
.
E agora para a questão real:
O que posso ajustar para obter o efeito desejado? Além disso, as regras de diretório comuns entre o VirtualHost
s podem ser refatoradas em httpd.conf
? Em caso afirmativo, eu faria algo como o seguinte?
<Directory "/var/www/vhosts">
allow from all
Options -Indexes
</Directory>
Eu uso uma definição vhost catchall que é a última a ser lida
<VirtualHost *:80>
ServerName default
ServerAlias *
DocumentRoot /var/www/default
ErrorDocument 404 /404.html
<Directory "/var/www/default">
Options All
AllowOverride None
allow from All
</Directory>
</VirtualHost>
O arquivo index.html padrão informa ao usuário que não há como ver no endereço fornecido. O arquivo 404.html mesmo.