Posso fazer com que o Apache ErrorDocument retorne 404 em vez de 301?

2

No meu .htaccess tenho

ErrorDocument 404 http://foo.com/404.html

Funciona, no sentido de que eu me recupero de qualquer erro de arquivo não encontrado e mostro a página 404, mas a maneira como ela funciona é redirecionar o URI errado usando uma página 301 para minha 404.html .

Isso é ruim porque os mecanismos de pesquisa e os rastreadores não acabam vendo um código 404, e sim um código 301, e não limparão páginas excluídas de seus índices.

Posso fazer com que o Apache publique o conteúdo desta página 404 no arquivo que não encontrou erros, e ainda assim retornar um código 404 em vez do 301?

    
por coneybeare 24.11.2014 / 16:01

3 respostas

3

Você deve tentar usar um caminho absoluto ou relativo e não uma URL

Meu apache2.conf:

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
    
por 24.11.2014 / 16:06
4

Não aponte para um URL externo

Os documentos do Apache dizem :

The syntax is,

ErrorDocument <3-digit-code> <action>

where the action can be,

  • Text to be displayed. Wrap the text with quotes (").
  • An external URL to redirect to.
  • A local URL to redirect to.

Apontar para um URL externo causará um redirecionamento real, enquanto o uso de um URL local é interno.

Portanto, para processar o conteúdo de um arquivo, basta apontá-lo, por exemplo:

ErrorDocument 404 /404.html

Use o código de status correto para o trabalho

This is bad because search engines and crawlers will not end up seeing a 404 code, rather a 301 code and will not purge deleted pages from their indices.

Se a página usada existir e agora não existir, o código de resposta correto é 410 foi . 410 é o código para dizer "ei, isso não existe" considerando que um 404 só será usado para significar que após repetidas tentativas de acessar a página agora inexistente.

    
por 24.11.2014 / 16:06
0

Comente as respostas do Maxence e do AD7six (não tenho mais reputação no serverfaul e as reputações de troca de pilha não contam aparentemente):

Acabei de resolver o problema desta forma, mas as imagens e estilos incluídos estavam em falta, pois o URL ainda é o URL que o usuário estava tentando chamar.

A solução é adicionar uma tag base na cabeça do documento 404, como

ErrorDocument 404

ou para usar URLs absolutos com ou sem protocolo / nome de domínio.

    
por 08.02.2017 / 19:36