No apache2 por design, qualquer solicitação http com um host desconhecido será direcionada para o primeiro VirtualHost carregado. Existe uma maneira de desativar esse recurso? Dito de forma diferente, eu quero ter um servidor web em que o usuário possa acessar apenas definições de VirtualHost explicitamente nomeadas. Qualquer outro nome de host não mencionado explicitamente em uma linha ServerName ou ServerAlias deve ser ignorado silenciosamente.
Isso é possível?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Atualização: Como sugerido abaixo e em outros lugares, ignorar silenciosamente uma solicitação pode não ser uma boa idéia e talvez quebre as RFCs para HTTP. No entanto, como os hosts virtuais são projetados para simular vários servidores HTTP físicos separados, a abordagem de ignorar silenciosamente não me parece irracional. Seria o mesmo que hospedagem virtual baseada em IP e firewall de alguns dos IPs (talvez não para todos os clientes).
fonte
RewriteRule . - [F]
Aqui está uma maneira alternativa que não envolve reescrever regras:
fonte
<VirtualHost>
deve, portanto, ser definido primeiro na configuração do servidor. Precisamente qual arquivo deve estar depende da sua configuração. (No entanto, o seu "subdomínios redirecionadas" questão poderia ser um problema não relacionado.)isso funcionou para mim
substitua xxxx pelo seu ipv4 e ipv6 reais,
substitua myactualservername.com por um site real atendido pela máquina
Estou usando o host virtual baseado em nome.
o crédito para esta solução vai para
https://serverfault.com/a/82309/459796
fonte