Como faço para configurar o host virtual padrão retornar um cabeçalho 404 no apache?

14

Sei que perguntas semelhantes foram feitas, mas as respostas disponíveis não são muito claras, portanto, tenha paciência comigo.

Depois de configurar alguns <VirtualHost>s no apache, gostaria de configurar o _default_ ServerName para que ele retorne a mensagem 404. Ou seja, a menos que algum domínio explicitamente disponível seja especificado no cabeçalho http do Host, retorne 404. (Idealmente, algo mais direto do que apontar para um diretório agora inexistente.)

Qualquer ajuda seria muito apreciada.

ezequiel-garzon
fonte

Respostas:

27

Você tentou:

Redirecionar 404 /
ErrorDocument 404 "Página não encontrada"

no VirtualHost padrão?


fonte
Obrigado, conseguiu! Como está claro meu baixo nível de experiência, devo acrescentar aos meus colegas iniciantes que o servidor padrão deve aparecer primeiro. (Isso me levou um tempo para descobrir!)
ezequiel-garzon
Observe que, se o ErrorDocumentapontar para um arquivo ou URL dentro desse vhost, ele também retornará um 404, gerando um erro interno no servidor.
Cyril N.
Essa resposta funcionaria para sites onde todos os fantasmas estão contidos em um único arquivo (a resposta de Eugene Fidelin é mais completa). Ao usar arquivos .conf separados para cada site com a2ensite, não consegui descobrir como carregar a configuração padrão (404) primeiro.
Andrew Swift
Redirect 404 /é suficiente para mostrar a página padrão "Não encontrado" do Apache e também funciona dentro de um
host virtual
1

Aqui está um exemplo de 000-default.conf que retornará um erro 404 se o nome do servidor não estiver configurado para o Apache

<VirtualHost *:80>
  ServerName default
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  Redirect 404 /
</VirtualHost>
Eugene Fidelin
fonte
Posso confirmar que a segunda parte funciona quando todos os vhosts estão configurados em um único arquivo (eu o coloquei primeiro).
Andrew Swift
1
Talvez seja melhor usar 503 (Serviço Indisponível) em vez de 404, mas duvido que na prática faça muita diferença, as ferramentas de monitoramento geralmente alertam para códigos que não sejam 200.
Kris
Está funcionando perfeitamente para http, mas não para https quando eu faço com a porta 443. Você tem alguma idéia sobre isso?
Sohail Ahmed