Como servir 410 do Apache em vez de 404

Como servir 410 do Apache em vez de 404

Em nosso site, tendemos a remover muitas páginas cujo 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 (todo o site é feito de arquivos estáticos).

Nós tentamos

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

deesta postagem do blogmas isso quebra todo o nosso site, atendendo 410 para cada solicitação.

Estamos usando o Apache 2.2.3

Responder1

    Redirect gone /path/to/resource

É a maneira correta de fazer isso. Se isso estiver causando erros para você, certifique-se de ter mod_aliascarregado no servidor.

Responder2

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

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

Não esqueça que omod_rewritea página também tem um companheirowiki mod_rewrite.

Responder3

Crie um errorpage.php (ou qualquer linguagem de script) e faça com que esse arquivo retorne um cabeçalho de status http de: 410 Gone, e adicione o seguinte à sua configuração do apache, que basicamente diz se o URL solicitado não é um arquivo nem um diretório (ou seja, arquivo não existe) e 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 errorpage.php contenha uma lista de (ou outros meios de rastreamento) páginas excluídas, para que possa retornar corretamente o status http 404 ou 410, dependendo se o recurso já existia ou não.

informação relacionada