Revisão técnica: 08/09/2026. Uma página de erro personalizada deve orientar o visitante e preservar o código HTTP correto. No Apache, ErrorDocument permite associar certos erros a documentos locais, quando a hospedagem autoriza essa configuração.
Prepare documentos simples
Crie arquivos HTML leves na raiz pública do domínio, por exemplo dentro de /erros/. Explique o problema em linguagem clara e ofereça uma saída útil. Evite expor detalhes do servidor. Para o erro 500, prefira um documento estático que não dependa do PHP ou do banco que podem estar falhando.
Associe os códigos aos caminhos locais
ErrorDocument 403 /erros/403.html
ErrorDocument 404 /erros/404.html
ErrorDocument 500 /erros/500.html
Esses caminhos começam na raiz da URL do domínio; não são caminhos absolutos do disco. Os arquivos precisam existir e estar acessíveis ao processamento do erro. Use caminhos de recursos como /erros/estilo.css para evitar que links relativos sejam resolvidos a partir de uma URL inexistente.
Uma URL externa em ErrorDocument pode transformar a resposta em redirecionamento. Para apresentar uma página mantendo o erro original, prefira um documento local e confira a resposta. A personalização de 401 tem requisitos próprios de autenticação e não deve ser tratada como simples redirecionamento de login.
Verifique qual camada gera o erro
Um CMS pode produzir sua própria página 404. Proxy, CDN e aplicação também podem gerar respostas que não passam pelo tratamento esperado no Apache. Além disso, uma falha na própria configuração pode impedir o carregamento da página personalizada.
Teste conteúdo e status HTTP
Solicite uma URL que não existe e confira, na aba de rede ou com uma ferramenta HTTP, se a resposta continua 404 e exibe o documento esperado. Teste 403 em um recurso preparado para esse fim. Simule 500 em ambiente de testes, sem provocar indisponibilidade no site publicado.
Abrir diretamente /erros/404.html só comprova que o arquivo existe; não confirma o status de uma URL inexistente. Se a página mostrar mensagem de erro com status 200, revise a camada responsável pela resposta.
Referências: respostas de erro personalizadas e diretiva ErrorDocument.