A diretiva Apache ErrorDocument não funciona

4

Não consigo que um documento de erro personalizado funcione para o 400 Bad Request. É um servidor CentOS LAMP.

ErrorDocument 400 /badrdoc.html

Eu tentei usar o acima em:

  1. Apache http.conf
  2. Apache httpd-vhosts.conf (em cada vhost)
  3. .htaccess nos htdocs raiz do site

Nenhum deles está funcionando. O Apache está exibindo sua página padrão 400 Solicitação incorreta.

Alguém pode lançar alguma luz sobre isso?

Editar: esqueci de mencionar, reiniciei o Apache depois das alterações.

    
por ServerBloke 30.03.2012 / 20:00

1 resposta

5

Eu tive alguns problemas para conseguir um documento de erro 400 personalizado para funcionar. Eu adicionei isso ao nível superior do meu Apache conf:

ErrorDocument 404 /404.html
ErrorDocument 400 /400.html

E criou os dois documentos de erro no DocumentRoot . Primeiro, eu testei o 404 com:

echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80

Isso retornou meu 404 personalizado.

Em seguida, o 400 (Observe que a barra inicial está faltando):

echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 80

A resposta foi o padrão do Apache 400.

Consegui recuperar meu 400 personalizado falando HTTP para um vhost HTTPS:

echo -en "GET / HTTP/1.0\n\n" | nc 127.0.0.1 443

Você ainda recebe o mesmo 400 personalizado de volta, mesmo que você faça uma solicitação inválida:

echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 443

Infelizmente para o seu teste, falar SSL com um vhost não-ssl não resulta em um 400 de qualquer tipo. Eu ainda não descobri como obter um ErrorDocuemnt 400 personalizado para ser enviado de volta na porta 80.

P.S. Lembro-me de ler em algum lugar que um ErrorDocument 400 não funcionará dentro de um arquivo .htaccess , pois pode não ser possível determinar o DocumentRoot correto se a solicitação estiver malformada. O mesmo provavelmente se aplica a virtualhosts baseados em nomes.

    
por 31.03.2012 / 14:02