Cómo servir 410 desde Apache en lugar de 404

Cómo servir 410 desde Apache en lugar de 404

En nuestro sitio, tendemos a eliminar muchas páginas cuyo contenido ha caducado y queremos devolver el estado http 410 en lugar de 404 para solicitudes a páginas (archivos físicos) que no existen en nuestro servidor (el sitio completo está hecho de archivos estáticos).

Hemos tratado

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

deesta publicación de blogpero eso simplemente arruina todo nuestro sitio, atendiendo un 410 por cada solicitud.

Estamos usando Apache 2.2.3

Respuesta1

    Redirect gone /path/to/resource

Es la forma correcta de hacerlo. Si eso le está causando errores, asegúrese de haberlo mod_aliascargado en el servidor.

Respuesta2

Creo que la respuesta de Chris es bastante buena. Si no desea utilizar un script PHP, podría convertirse en:

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

No olvides que elmod_reescriturala pagina tambien tiene una compañiamod_rewrite wiki.

Respuesta3

Cree un errorpage.php (o cualquier lenguaje de programación) y haga que ese archivo devuelva un encabezado de estado http de: 410 Gone, y agregue lo siguiente a su configuración de Apache, que básicamente dice si la URL solicitada no es un archivo ni un directorio (es decir, el archivo no existe), luego cargue el documento errorpage.php.

RewriteEngine on

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

El errorpage.php podría ser algo tan simple como:

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

También podría hacer que errorpage.php contenga una lista de (u otros medios de seguimiento) páginas eliminadas, de modo que pueda devolver correctamente el estado http 404 o 410 dependiendo de si el recurso había existido previamente o no.

información relacionada