Cómo devolver un código HTTP 410 Gone en WordPress

En ocasiones para mejorar la forma en que transmitimos a los buscadores lo que hemos hecho con algunas páginas, podemos especificar algunos códigos más concretos, que los que usan por defecto, como por ejemplo devolver el 410 en algunos casos en los que normalmente se enviaría un 404.

Esto supone que enviamos información de mejor calidad a Google y por lo tanto, influye positivamente en tu posicionamiento.

Error 404 Not Found y Error 410 Gone

Cuando se establece una comunicación entre el cliente web (el navegador) y el servidor web (Apache o nginx normalmente), de lo primero que recibe el cliente es el código de respuesta. Este código de respuesta es un número entero que en base al rango en que se encuentre, ofrece un significado, veamos:

  • 100s: Solicitudes de información
  • 200s: Solicitudes exitosas
  • 300s: Redirecciones
  • 400s: Errores del lado del cliente
  • 500s: Errores del lado del servidor

Los errores de tipo 400s son errores de tipo de cliente, es decir, tú (cliente) me estás preguntando a mí (servidor) por algo que no puedo encontrarte. Los 500s si os fijáis son del tipo error del servidor y significa que el cliente pregunta al servidor por cosas en la que el servidor falla al recuperarlas.

Aquí nos centramos en dos códigos de estado 404 y 410:

  • Ambos significan que el recurso no está disponible, que no puede ser recuperado, pero tienen diferencias:
  • 404: no se encontró, es un problema temporal, esto significa que puedes volver a intentar la URL más tarde para ver si el problema se ha resuelto
  • 410: «gone» este recurso existió pero ya no va a volver a existir, cuando los rastreadores de los motores de búsqueda identifiquen este código de estado HTTP, desindexarán el enlace,

Un caso concreto y cómo implementarlo en WordPress

Os presento un caso concreto donde ha sido necesario.

Había muchos errores 404 en una tienda online, la mayoría de búsquedas con parámetros y paginaciones que no iban a volver a darse en el tiempo, se decide devolver un 410 en todas ellas para que Google se centre en rastrear otras URL de mayor valor

A priori, no existe un plugin que haga eso de forma directa o si existe, su uso no estaba justificado. Así que manos a la obra comienzo a buscar en el código fuente de WordPress y WooCommerce qué filtro utilizar para cambiar la lógica estándar.

Encuentro el filtro: status_header y aplico la lógica necesaria:

add_filter( 'status_header', function( $status_header, $code, $description, $protocol ){
	global $wp_query;

	if( is_404() && isset( $wp_query->query['product_cat'] ) ){
		return "$protocol 410 Gone";
	}
	
	return $status_header;
}, 10, 4 );

¿Qué significa todo esto?

  • Este filtro permite personalizar el código de respuesta de WordPress
  • El código de respuesta siempre es algo así: HTTP 1.1 404 Not Found es decir, una cadena compuesta por 3 elementos seperados por comas:
    • El protocolo
    • El código de error
    • Su significado
  • Recibimos todos los datos necesarios y lo que hacemos es hacer un condicional para si:
    • Se trata de una consulta que iba a devolver un código 404
    • Y se esté consultando una categoría de producto (entonces en ese caso la consulta tendrá un elemento en su array con el índice product_cat)
  • Devolver un 410 Gone, respetando el protocolo HTTP que se esté usando, que no tenemos por qué conocerlo a priori, o si no, devolver lo que se iba a devolver antes

Como veis es realmente sencillo y puede seros de mucha utilidad en sitios donde tengáis tal cantidad de URLs que vuestro equipo SEO os sugiera cambiar el código estándar 404.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito