Hosts virtuais do Apache com um registro de DNS curinga

1

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>
    
por knpwrs 07.06.2011 / 22:50

2 respostas

3
<VirtualHost *:80>
ServerAlias *.mainsite.com
...
... 
</VirtualHost>

Deve pegar qualquer coisa que não esteja definida de outra forma.

    
por 07.06.2011 / 23:09
2

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.

    
por 07.06.2011 / 23:26