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