En todo proyecto siempre llega el momento de pensar en un cambio: ¿por qué no cambiamos la web? ¡Quiero un diseño más bonito! ¡Que brille! ¡Que haga todo solo! ¡Que tenga explosiones! Pero, como suele pasar en esta vida, no todo es tan sencillo, ya que además de las labores de mis colegas desarrolladores y diseñadores, luego viene una ardua tarea: la migración.

Y sí, las webs también migran, cambian, se transforman y eso es algo que alguien debe gestionar. Para empezar, una web nueva posiblemente no se reduzca a una nueva capa de pintura, sino que tendrá una arquitectura de navegación diferente, nuevas categorías, nuevo sistema de paginado y contenido nuevo. Todo eso hay que tenerlo en cuenta porque, al final, lo que estamos haciendo es pasar de un lugar a otro y, si la antigua web tiene algo de histórico en la red, seguramente los robots de los buscadores la hayan indexado y, ¿a que no queremos que todas esas url indexadas dirijan a un horrible error 404? La solución no es otra que establecer equivalencias entre url antigua y url nueva, lo que, en una frase, significa hacer una migración.

¿A dónde nos vamos? Apache o NGINX

Lo primero que debemos saber es cuál es nuestro destino. Aunque muchas veces el dominio va a ser el mismo (algo que conseguimos reapuntando nuestras queridas DNS), posiblemente pasemos a un servidor diferente, de otro tipo. Los tipos de servidor open source más famosos son Apache y NGINX, con sus pros y sus contras, pero hoy me voy a centrar en cómo llevar a cabo una migración si nuestro destino es el segundo (pronto explicaré como hacerla en Apache), siempre teniendo en cuenta que los pasos son los mismos a excepción de la sintaxis de las reglas, mucho más sencillas en Apache.

Pues bien, sabemos a dónde vamos: a un servidor de tipo NGINX.

Extraemos las url de la anterior web

Un paso clave para realizar una migración es establecer las equivalencias. Para ello, no queda otra que listar todas las url que tenía la web de la que venimos y las que tiene a la que vamos, con pasos intermedios que explicaré más adelante.

En primer lugar, utilizaremos herramientas para hacer website crawler, por ejemplo mi viejo amigo el Screaming Frog. Este paso suele tardar más o menos dependiendo del volumen de url de las webs, pero mientras dejamos a la rana hacer su trabajo, podemos realizar otros pasos para asegurarnos de migrar las url correctas.

Para crawlear con Screaming Frog, tan solo deberemos abrir el programa y poner la url que queremos analizar en la parte superior. Pulsamos Start y esperaremos a que termine de listar, posteriormente exportaremos la lista en formato de hoja de cálculo, no sin antes haber filtrado solo por vista en HTML.

Filtrar por html en Screaming Frog

Nos aseguramos de tener todas las url

Screaming Frog tiene sus límites, y es que al final no deja de ser una araña que va tejiendo redes por todos los enlaces del sitio web analizado. Siempre se nos quedará alguna url fuera de la lista, pero existen formas de intentar evitarlo, aunque no de forma infalible.

Lo que yo suelo hacer cuando me encuentro con esta tarea es utilizar otro amigo del que os hablaré algún día: SEO Quake. Se trata de una extensión de navegador muy útil para análisis SEO superficiales, pero suficiente para extraer unas cuantas url indexadas.

Los pasos son muy sencillos:

  • Instalamos la extensión SEO Quake en nuestro navegador. Podemos hacerlo en nuestro navegador principal o en uno secundario (Chrome y Firefox por ejemplo).

Extensión SEO Quake en Chrome

  • Configuramos Google para mostrar 100 resultados por página. Para ellos vamos a las preferencias de Google, establecemos que nunca se muestren resultados instantáneos y movemos el contador hasta 100. Guardamos.

Configurar número de búsquedas en Google

  • Realizamos una búsqueda de la url antigua utilizando la fórmula site, que nos filtrará todos los resultados indexados de la web que queremos analizar. Ejemplo: site:miguelalberola.com.

Búsqueda de fórmula site en Google

  • Exportamos en CSV con SEO Quake los 100 resultados de cada página de la búsqueda. Con exportar las 5 primeras páginas ya podemos tener una aproximación bastante certera de las url interesantes. Esto dependerá del volumen de url de la página.

Exportar CSV en Seo Quake

Analytics te dice cuáles son las páginas más vistas

Si el volumen de url a migrar es monstruoso seguramente pensemos que no se trata de un trabajo para humanos, y así es. Del mismo modo, hacer migraciones exactas de miles y miles de direcciones web no es lo más eficiente, ya que debemos tener presente que cada vez que entramos en la web el servidor debe recorrer secuencialmente las reglas creadas, lo que puede traducirse en mayor tiempo de carga a más reglas a procesar.

Para evitar hacer migraciones mortales, lo mejor que podemos hacer es recurrir a Google Analytics, vamos a la sección de Comportamiento y luego a Contenido del sitio y Todas las páginas, ordenamos por número de páginas vistas y exportamos el listado a un CSV. Podemos configurar las vistas para mostrar, por ejemplo, las 500 primeras páginas más vistas, aunque esto también se nos puede ir de las manos. Por ello, debemos fijarnos un criterio de mínimos, es decir, “todas las páginas con menos de 100 visitas mensuales no va a tener una regla específica”, por ejemplo. Lo mejor es centrarse en las que mayor volumen de visitas concentran con reglas concretas y para el resto hacer generales tipo “las páginas de productos van a su categoría si no superan las 100 visitas”.

Páginas más visitadas en Google Analytics

Eliminamos duplicaciones de url

Y aquí estamos, con tres listas diferentes de url de la web antigua. El siguiente paso no es otro que el de unificar las listas. Debemos copiar, de acuerdo a como yo lo hago, en primer lugar el listado de Analytics, y después los otros dos sin importar el orden.

El listado de Analytics debe ir el primero ya que ahora deberemos eliminar los duplicados y, por ejemplo, Excel toma la opción válida como su primera aparición, así que queremos que se eliminen las coincidencias posteriores.

Una vez tenemos la columna de url, la seleccionamos completa y nos vamos a la opción Quitar duplicados del apartado de Datos de Microsoft Excel. Imagino que programas abiertos como las hojas de cálculo de OpenOffice tendrán su equivalente, así que no debe haber problema. Incluso desde Google podemos hacerlo.

Eliminar duplicados en Excel

Extraemos las url de la nueva web

Ya tenemos el listado definitivo de url de la página que queremos migrar pero, ¿a dónde las dirigimos? Ahora es el turno de la nueva web, de la que va a ser la definitiva. Generalmente, tendremos la web en un dominio o subdominio de prueba con el robots.txt en Disallow: / (¡importante!). Para analizar correctamente esta web deberemos configurar nuestro Screaming Frog para que ignore el archivo robots.txt. En Mac la opción se encuentra dentro de Configuration > Spider; en Windows existe una opción específica dentro del menú Configuración.

Ignorar robots.txt en Screaming Frog

Una vez marcamos la opción, tan solo haremos que Screaming Frog comience a funcionar sobre el nuevo dominio y, una vez finalice, lo exportaremos a una hoja de cálculo.

Creamos las reglas de redirección

Teniendo ya todas las url antiguas y todas las nuevas, ahora comienza un trabajo casi manual. Deberemos establecer equivalencias entre unas y otras. Mi recomendación es comenzar por aquellas que hemos extraído de Analytics (si conservamos las visitas además podemos establecer prioridades) y continuar con el resto.

En ocasiones migrar miles y miles de url es imposible, así que deberemos especificar criterios como llevar productos a la página de categoría, páginas que dejan de existir a la home o al lugar más parecido, etc. Para todo ello, montaremos el excel por columnas:

  • Columna 1: listado de urls antiguas. Deberemos trabajar con url relativas, es decir, eliminamos el dominio. Esto lo podemos hacer con la opción de Reemplazar de Excel, por ejemplo, sustituyendo el dominio por un espacio vacío.
  • Columna 2: url nueva. Esta debe ser la url definitiva dónde se redirigirá la anterior.
  • Columna 3: concatenación de fórmulas de redirección. Se trata de crear las reglas utilizando la fórmula =CONCATENAR() de Excel, donde deberemos combinar las celdas de las columnas 1 y 2 con las sintaxis de las fórmulas de redirección de NGINX.

La sintaxis de redirecciones es quizás el aspecto más complicado de realizar una migración. En Apache son bastante más sencillas, pero en NGINX estamos hablando de programar.

Sintaxis de redirecciones en NGINX

En mi día a día me he encontrado con tres situaciones con las que básicamente he podido resolver todos los casos que se me han planteado:
De url exacta a url exacta:

Esto se traduce en que http://www.dominio.com/envios-y-formas-de-pago.html redireccionará con un 301 a https://www.dominio.com/es-ES/guia-de-compra/formas-pago. Si la redirección fuese desde un dominio diferente o sin certificado SSL sería igual.

De url que empieza por algo a url exacta:

Esto se traduce en que cualquier página que comience por http://www.dominio.com/blog redireccionará con un 301 a https://www.dominio.com/es-ES/blog/. Por ejemplo, /blog/articulo1 llevaría al nuevo /blog/.

De url que empieza por algo a url que añade algo:

Esto se traduce en que cualquier página que comience por http://www.dominio.com/blog redireccionará con un 301 a https://www.dominio.com/es-ES/blog, pero si comenzara por /blog/articulo1/, llevaría también a https://www.dominio.com/es-ES/blog/articulo1/. Esta opción es la que menos he utilizado y es para hacer equivalencias puras con un cambio de estructura previa de niveles.

Ejecutamos las reglas

Habiendo concatenado las fórmulas necesarias en nuestra tercera columna de Excel (si nos lo montamos bien con arrastrar la primera celda hacia abajo será suficiente, aunque siempre hay alguna excepción a revisar a posteriori) supondrá que ya tenemos todas las redirecciones realizadas. Ahora solo falta ejecutarlas.

Para ello lo mejor es contar con personal especializado, pero si no es el caso, lo más seguro es que debamos implementar las reglas en nuestro archivo .conf del servidor. En líneas generales estará en /etc/nginx/sites-available/dominio.conf.

La sintaxis será, por ejemplo:

Y eso es todo. Sinceramente hacer una migración no es algo sencillo y seguramente necesitarás algunos conocimientos técnicos. Si es la primera vez que realizas una asume que van a fallar cosas, que habrá bucles infinitos y que tendrás que testear bien la web después de ejecutarla. Lo mejor es trabajar mano a mano con tu proveedor de hosting o, si no es posible, con un desarrollador que pueda aportarte su visión.

Y ya está, ¡feliz migración!

Explosión mental