Como servir 410 do Apache em vez de um 404

2

Em nosso site, tendemos a remover muito as páginas em que o conteúdo expirou e queremos retornar o status http 410 em vez de 404 para solicitações de páginas (arquivos físicos) que não existem em nosso servidor site é composto de arquivos estáticos).

Nós tentamos

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ - [G,L]

de esta postagem do blog , mas que apenas quebra todo o nosso site, atendendo a 410 para cada pedido.

Estamos usando o Apache 2.2.3

    
por DanSingerman 19.01.2010 / 18:41

3 respostas

7

    Redirect gone /path/to/resource

É a maneira correta de fazer isso. Se isso estiver causando erros, verifique se você tem mod_alias carregado no servidor.

    
por 19.01.2010 / 18:48
3

Eu acredito que a resposta de Chris é muito boa. Se você não quiser usar o script PHP, ele pode se tornar:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$                - [G,L]

Não esqueça que a página mod_rewrite também tem uma compainion mod_rewrite wiki .

    
por 30.01.2010 / 06:52
0

Crie um errorpage.php (ou qualquer linguagem de script) e faça com que o arquivo retorne um cabeçalho http: 410 Gone, e adicione o seguinte à configuração do seu apache, que basicamente diz se o URL solicitado não é um arquivo nem um diretório (ou seja, arquivo não existe), em seguida, carregue o documento errorpage.php.

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /errorpage.php [L]

O errorpage.php pode ser algo tão simples como:

<?php header($_SERVER['SERVER_PROTOCOL'].' 410 Gone');

Você também pode fazer com que o arquivo errorpage.php contenha uma lista de (ou outras formas de rastreamento) páginas excluídas, para que ele possa retornar corretamente o status 404 ou 410 http, dependendo se o recurso já existia ou não.

    
por 27.01.2010 / 10:49