Verifica redirecciones 301 desde tu ordenador en 2021

Como parte de una migración SEO una de las tareas que se asigna al departamento de desarrollo consiste en aplicar redirecciones.

Estas redirecciones corrigen errores internos de enlazado o bien se necesitan para aplicar una nueva arquitectura de enlaces y se ha de redirigir direcciones antiguas hacia las nuevas.

Cuando son dos o tres redirecciones, podemos manejar su comprobación de forma manual. El problema aparece cuando el equipo SEO nos pide redireccionar varios cientos de enlaces.

¿Porqué automatizar?

El testeo manual de todas estas redirecciones es imposible debido al coste en tiempo y la propensión de errores si esta lista de redirecciones se va modificando durante el proceso de migración.

Debemos tener un sistema que permita lanzar comprobaciones para cada url y verifique que va a la url destino. Este sistema ha de ser sencillo y rápido.

Podemos utilizar herramientas visuales tipo Screaming Frog comparando resultados con hojas Excel que verifiquen si el destino es correcto o bien herramientas online como la de httpstatus.

El equipo de desarrollo de Seocom tiene en su arsenal otra manera de verificar estas redirecciones: herramientas de la consola Linux.

Para nosotros mejor herramientas de consola

En este artículo comenzaremos por la manera más sencilla de revisar redirecciones. Consiste en ejecutar la instrucción curl.

curl -I https://seocom.agency/test1/

HTTP/2 301
date: Thu, 30 Jul 2020 14:18:58 GMT
server: Apache/2.4.43 (Ubuntu)
location: https://seocom.agency/test2/
cache-control: max-age=0
expires: Thu, 30 Jul 2020 14:18:58 GMT
content-type: text/html; charset=iso-8859-1

En la respuesta vemos que se realiza un 301 sobre el location https://seocom.agency/test2/

Es una solución sencilla, pero curl solo nos indica que hay una redirección, lo que queremos saber es cual es la última redirección.

Ampliamos para ver todas las redirecciones

Para ello añadimos el parámetro L lo que le indica a curl que siga las redirecciones.

curl -IL https://seocom.agency/test1/

HTTP/2 301
date: Thu, 30 Jul 2020 15:11:59 GMT
server: Apache/2.4.43 (Ubuntu)
location: https://seocom.agency/test2
cache-control: max-age=0
expires: Thu, 30 Jul 2020 15:11:59 GMT
content-type: text/html; charset=iso-8859-1

HTTP/2 301
date: Thu, 30 Jul 2020 15:11:59 GMT
server: Apache/2.4.43 (Ubuntu)
location: https://seocom.agency/test3
cache-control: max-age=0
expires: Thu, 30 Jul 2020 15:11:59 GMT
content-type: text/html; charset=iso-8859-1

HTTP/2 301
date: Thu, 30 Jul 2020 15:11:59 GMT
server: Apache/2.4.43 (Ubuntu)
location: https://seocom.agency/
cache-control: max-age=0
expires: Thu, 30 Jul 2020 15:11:59 GMT
content-type: text/html; charset=iso-8859-1

HTTP/2 200
date: Thu, 30 Jul 2020 15:11:59 GMT
server: Apache/2.4.43 (Ubuntu)
last-modified: Thu, 30 Jul 2020 06:28:25 GMT
cache-control: max-age=0
expires: Thu, 30 Jul 2020 15:11:59 GMT
vary: Accept-Encoding
content-type: text/html; charset=UTF-8

En esta ocasión vemos que se realizan tres redirecciones y acaba en una página con contenido.

Tal y como muestra las redirecciones, es algo lioso ver qué redirecciones se hacen, ya que tenemos que ir mirando entre las diferentes lineas que retorna el comando curl.

Simplificamos el código

Para simplificarlo, realizamos un simple filtrado aplicando el comando grep al resultado de curl.

curl -ILs https://seocom.agency/test1 | grep "[Ll]ocation"

El parámetro «s» en curl evita que devuelva el progreso de las peticiones y retorna solamente las cabeceras. Con grep hacemos que solo aparezcan finalmente los location.

location: https://seocom.agency/test2
location: https://seocom.agency/test3
location: https://seocom.agency/

Un dato interesante que también podriamos devolver es si se hace un 301 o 302 y ver cual es el valor de estado para la última redireccion.

Modificamos el filtro y volvemos a ejecutar.

curl -ILs https://seocom.agency/test1 | grep "[Ll]ocation\HTTP"

Ahora se añadirá la cabecera HTTP a la cabecera Location.

HTTP/2 301
location: https://seocom.agency/test2
HTTP/2 301
location: https://seocom.agency/test3
HTTP/2 301
location: https://seocom.agency/
HTTP/2 200

Creamos el primer script de consola

Para finalizar nos quedaría crear un comando de consola para que sea mas sencillo ejecutar estas instrucciones. Ello nos permitirá ampliar la funcionalidad para verificar múltiples redirecciones en el siguiente post.

Creamos un fichero de texto llamado check301.sh dentro de /usr/local/bin y así lo tendremos accesible desde cualquier lugar.

El contenido del fichero será tan sencillo como:

#!/bin/bash
curl -ILSs "$1" | grep "[Ll]ocation\|HTTP"

Asegurarnos que el fichero sea ejecutable:

chmod +x /usr/local/bin/check301.sh

A partir de este momento podremos verificar las redirecciones simplemente ejecutando.

check301.sh https://seocom.agency/test1

En el próximo artículo utilizaremos este check301.sh para ver cómo podemos revisar largas listas de redirecciones de 301 de manera fácil y confiable.