Aprende a optimizar tus blogs para que sean los primeros en las busquedas

La opción más adecuada es decirle a Apache que queremos que WordPress gestione la página de error 410 usando en el archivo .htaccess una línea que indique donde tiene que mirar cuando ocurre un error 410; esto se hace usando ErrorDocument.
Todas las URLs que queremos que nos devuelvan un 410, las definimos en el .htaccess, utilizando una RewriteRule que use el flag G.
Puede uno pensar en establecer que ese archivo sea el 404.php de nuestro theme, pero no funciona al no cargar correctamente todo el entorno de WordPress.

Usando el código siguiente definiremos desde Apache las URLs que queremos que den error, pero usaremos WordPress para mostrar la página de error como para un 404. (O podemos personalizarla creando un template 410.php).

Para empezar, en el archivo .htaccess añadimos una línea de ErrorDocument:

ErrorDocument 410 /index.php?error=410

En el functions.php del theme, añadir el siguiente código:

/**
* Response header 410.
*
* @param string $template
* @return string
*/
function e12_response_410( $template ) {
    if( is_404() && '410' == $_SERVER['REDIRECT_STATUS'] ) {
      status_header( 410 );
      if( file_exists( STYLESHEETPATH . '/410.php' ) ) {
         return STYLESHEETPATH . '/410.php';
      }
   }
return $template;
}
add_filter( 'template_include', 'e12_response_410' );

Y terminamos añadiendo las reglas a Apache para que devuelva los 410 en las URL que queremos:

RewriteRule ^url-eliminada$ - [G,L]

Si has realizado de forma correcta todos los pasos, al realizar una petición de esa URL, nos debería devolver la misma página que un error 404, pero con la cabecera de un 410.

 

Si todo esto te parece muy complejo puedes usar el plugin 410 for WordPress, pero en cosas tan delicadas como devolver un 410 suelo preferir hacerlo a mano para asegurarme que no hay sorpresas.

 

Este problema me ha traído de cabeza muchas veces, ya que se presenta de diferentes maneras pero siempre tiene (en mi caso) un denominador común:

En la raíz del dominio está instalado WordPress y quiero hacer algo (que no tiene que ver con WordPress) con una carpeta dentro de ese dominio

El problema a veces aparece simplemente al crear la carpeta, que es cuando vemos que es imposible acceder al directorio en cuestión ya que nos sale un error 404 de WordPress. Otras veces el error 404 ocurre cuando creamos un .htaccess en la carpeta. (Porque queremos protegerla usando .htpasswd o por cualquier otra razón)

Si estas en uno de estos dos casos y has probado todos los trucos que has podido encontrar por internet (y que a mi al menos no me han funcionado), te traigo (espero) la solución: Leer más…