Desative * .example.com no Apache 2.2

2

Meu site funciona com e sem o subdomínio www (ou seja, ambos example.com e www.example.com work). No entanto, anything.example.com também funciona e o mesmo conteúdo do site é veiculado.

Como posso desativar todos os subdomínios, exceto www.example.com ? Eu quero que todos os outros subdomínios retornem um erro 404 ou simplesmente não mostrem nada.

A configuração agora é a seguinte:

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com

        ...
</VirtualHost>
    
por Andrey 19.02.2011 / 12:40

3 respostas

1

Adicione à configuração do VirtualHost e habilite o mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|)domain\.com$ [NC]
RewriteRule .* - [F]
    
por 19.02.2011 / 13:20
0

colocar

ServerName www.domain.com

e comente o #ServerAlias ...

em seguida, quando você solicitar domain.com, você terá acesso ao site padrão do apache apache2ctl -S mostrará qual é o padrão ...

ou se você quiser fazer isso via mod_rewrite.

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ 
RewriteRule (.*) - [F]

Isso dará 403 para qualquer solicitação não designada para www.domain.com

Ou, se você quiser, pode redirecioná-los todos para www, para que eles não usem o outro subdomínio opções.

 RewriteCond %{HTTP_HOST} !^www\.domain\.com$  
 RewriteRule (.*) http://www.domain.com/ [R=301,L]
    
por 19.02.2011 / 13:01
0

Você pode criar um catch all vhost. Certifique-se de que é o último vhost que você define, pois qualquer coisa que não tenha sido correspondida anteriormente será capturada por ele.

<VirtualHost *:80>
        ServerName      catchall
        ServerAlias *
        DocumentRoot /var/www/catchall
</VirtualHost>

Para mostrar nada, tenha um simples arquivo index.html em branco no DocumentRoot do vhost.

    
por 19.02.2011 / 13:14