Web Servers - htaccess rapidinho: Documentos de erro
A aplicação mais conhecida do arquivo .htaccess talvez seja, em casos de erro, de direcionar usuários para páginas de erro personalizadas. Digamos que um usuário solicite uma página inexistente - ele recebe a página padrão do sistema do seu servidor avisando-o do ocorrido. Para personalizar seu site, é possível criar suas próprias páginas de erro e, quando for o caso, direcionar os usuários para elas.
Para criar suas próprias páginas de erro é necessário que você conheça os códigos de erro retornados pelo servidor. Na coluna à direita você encontra todos os códigos de erro atualmente padronizados. É claro que não há necessidade de fazer páginas para cada um deles… na verdade, você nem deveria. Um documento de erro para o código 200 causaria um loop infinito cada vez que uma página fosse encontrada - uma nhaca!
Geralmente cria-se documentos de erro para os código 404 e 500, para páginas não encontradas e para poder controlar erros internos do servidor em scripts que estejam sendo utilizados. Também é interessante personalizar o erro 401 - Autorização Requerida - quando se tem áreas protegidas e o erro 403 - Proibido - quando se tem arquivos com permissão de uso bloqueada. Outra possibilidade seria tratar o erro 400 - Requisição Viciada - para capturar erros em scripts ou URLs malucas que um usuário possa tentar usar.
Para especificar seus próprios documentos de erro, tudo o que você precisa é adicionar o seguinte comando, em uma linha, ao seu arquivo htaccess:
ErrorDocument code /diretorio/nomearquivo.ext
Ou:
ErrorDocument 404 /erros/naoencontrado.html
E, de forma análoga:
ErrorDocument 500 /erros/errointerno.html
Você pode usar os nomes que quiser para seus documentos de erro - para facilitar, recomendo que lembrem a função das mesmas - e colocá-los em qualquer diretório que seja acessível pela web através de uma URL. A primeira barra corresponde ao diretório raiz do site. Eu, pessoalmente, prefiro mantê-los num diretório próprio para facilitar a manutenção e para poder controlar spiders indexando estas páginas através de um arquivo ROBOTS.TXT.
Na hipótese de capturar todos os erros acima mencionados e direcionar o usuário para páginas específicas, o arquivo htaccess teria a seguinte configuração:
ErrorDocument 400 /erros/badrequest.html
ErrorDocument 401 /erros/authreqd.html
ErrorDocument 403 /erros/forbid.html
ErrorDocument 404 /erros/notfound.html
ErrorDocument 500 /erros/serverr.html
Não se esqueça de que cada precisa estar numa linha única própria. Pode-se também especificar um endereço URL completo, como por exemplo http://seusite.com/erros/notfound.html, apesar de que a forma padrão é o endereçamento relativo como mostrado acima.
Acredite ou não, mas você também pode especificar HTML!
ErrorDocument 401 ”
Observe que, logo no início do código HTML, existem aspas. Observe também que, no final do código HTML, não há aspas. É assim mesmo que deve ser feito e, lembre-se, tudo numa única linha sem word wrap! Apesar de existir esta opção, você tem muito mais controle sobre páginas de erro quando usadas em conjunto com xSSI ou CGI ou ambos. Eu uso, por exemplo, uma página de erro 404 que, além da mensagem para o usuário, contém código PHP que me envia um e-mail com a indicação do documento faltante toda vez que a página é acessada. Se tiver curiosidade, dê uma olhada em Capturando erros do servidor.
Bem, para páginas personalizadas de erro isto é tudo. Experimente e divirta-se. É claro que um arquivo htaccess com estes comando deve ficar preferencialmente no diretório raiz para que possa capturar possíveis erros em qualquer setor do site.
Requisições de cliente bem sucedidas:
. 200 - OK;
. 201 - Criado (Created);
. 202 - Aceito (Accepted);
. 203 - Informação não autorativa (Non-Authorative Information);
. 204 - Sem conteúdo (No Content);
. 205 - Conteúdo resetado (Reset Content);
. 206 - Conteúdo parcial (Partial Content).
Requisição de Cliente redirecionada:
. 300 - Escolhas múltiplas (Multiple Choices);
. 301 - Mudado permanentemente (Moved Permanently);
. 302 - Mudado temporariamente (Moved Temporarily);
. 303 - Veja outras (See Other);
. 304 - Não modificado (Not Modified);
. 305 - Use Proxy (Use Proxy).
Erros de requisições de cliente:
. 400 - Requisição viciada (Bad Request);
. 401 - Requer autorização (Authorization Required);
. 402 - Requer pagamento (Payment Required (ainda não usada));
. 403 - Proibido (Forbidden);
. 404 - Não encontrado (Not Found);
. 405 - Método não permitido (Method Not Allowed);
. 406 - Não aceitável (codificação) (Not Acceptable (encoding));
. 407 - Requer autenticação proxy (Proxy Authentication Required);
. 408 - Requisição vencida (Request Timed Out);
. 409 - Requisição conflitante (Conflicting Request);
. 410 - Acabou (Gone);
. 411 - Requer comprimento do conteúdo (Content Length Required);
. 412 - Falha na precondição (Precondition Failed);
. 413 - Entidade requerida muito longa (Request Entity Too Long);
. 414 - URI requerida muito longa (Request URI Too Long);
. 415 - Tipo de mídia não suportado (Unsupported Media Type).
Erros do servidor:
. 500 - Erro interno do servidor (Internal Server Error);
. 501 - Não implementado (Not Implemented);
. 502 - Gateway viciado (Bad Gateway);
. 503 - Serviço não disponível (Service Unavailable);
. 504 - Gateway vencido (Gateway Timeout);
. 505 - Versão HTTP não suportada (HTTP Version Not Supported).
Autor/fonte: Vovó Vicki
Tags: Web Servers