
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_alias
carregado 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.