SEO y migración o cambio de CMS – Recuperar urls no encontradas (404)

Buenas de nuevo y antes de nada disculpas por bajo ritmo de publicaciones de los últimos meses, pero de verdad que ya casi no tengo tiempo de dedicar a la publicación de nuevos artículos. Hoy intentaré compensar ese problema con una entrada muy útil si habéis hecho un cambio de CMS como por ejemplo de Oscommerce a PrestaShop, de drupal a Joomla…

Problematicas de la migración

En principio el mejor consejo que os puedo dar como consultor SEO antes de poner en marcha un proceso de migración es que conservéis las mismas urls de un sistema a otro, es decir, lo que antes era: dominio.com/categoria/producto deberá seguir siendo igual. Pero claro esto en ocasiones no es posible porque:

  1. El nuevo CMS añade distintos id de recursos en las urls, y no es posible modificarlas (o demasiado complicado) en la BD.
  2. El antiguo sistema tenía url no amigables y en el nuevo son amigables.
  3. El sistema nuevo y el anterior son muy distintos a la hora de tratar las taxonomías y no resulta posible hacer una adaptación.

Soluciones

Todas las soluciones que voy a presentar se basan en el mismo concepto, tenemos que saber para cada url antigua que nueva url le corresponde.

Solución para sitios pequeños <100 url

Usando Web Masters Tools de Google o Analytics podemos sacar las urls de nuestro sitio antiguo y volcarlas en un CSV, para luego poner frente a cada una de las antiguas la nueva url. Después tendremos que convertir esos datos a formato .htaccess de esta forma.

Redirect 301 vieja_url nueva_url

He dicho que esta solución es para menos de 100 urls, aunque si tienes paciencia puedes solucionar muchas más así.

Solución para sitios grandes

Realmente es para dar una solución a este tipo de sitios para lo que escrito esta entrada. Recientemente he lidiado con un par de clientes que llamaron diciendo algo así.

..Hace un mes más o menos pasamos de tal sistema de gestor de contenidos a tal otro… y poco a poco estamos perdiendo tráfico SEO sin saber por qué…

Por otro lado eran problemas en tiendas online (Prestashop) que tenían entre 10,000 y 50.000 urls activas.

Control de títulos

Es obvio que cambiar de urls de un día para otro te va a traer problemas, pero en primer lugar ve archive.org o algún sitio similar y fíjate en los titles que tenías antes para las páginas principales. Si tienes Analytics desde mucho antes de la migración allí también podrás sacar los títulos antiguos.

Cuando tengas el listado de títulos debes asegurarte que el de la home queda igual (o optimizado para las keywords) y las principales categorías o páginas también.

Nos podemos ayudar para esto de herramientas como Fusion tables de Google y hacer un grafo así

recuperar-url-keywords

La forma de hacer esto es:

  1. Descargamos de Google Web Masters Tools el CSV de consultas de búsqueda
  2. Descargamos del mismo sitio el CSV de url que se han mostrado en SERP
  3. En mi caso he leido con PHP las urls de uno y las keywords de otro para compararlas y crear una nueva tabla que tenga en una columna la url y en otra las keyword que probablemente le llegarán.
  4. Luego no tenemos más que subir ese nuevo CSV a Fusion tables para hacer el gráfico.

Control de urls

En primer lugar aclarar que el tener muchos errores 404 en un sitio no va hacer que ese sitio pierda posicionamiento, pero lógicamente si esos errores se producen en urls que antes estaban bien posicionadas y no le damos a los buscadores una url alternativa (301) a la que ir, poco a poco iremos perdiendo el posicionamiento de la url y por otra parte haremos que los usuarios acaben en la página 404 y no en la que querían entrar.

Como os he contado el sitio para el que he aplicado esta solución es una tienda con muchas urls, el cliente no quería volver a la situación anterior y tampoco estaba dispuesto a casar cada url con su nueva correspondiente. Por tanto ofrecí esta solución:

Modificar .htaccess para que a la página 404.php le llegase la url que se había solicitado:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /404.php/$1

Recibir esa url en la página 404.php con $_SERVER[‘REDIRECT_URL’]

Y ahora tenemos que hacer una función que nos haga la re-dirección. Para cada caso concreto creo que en este punto se debería tomar distintas medidas, pero como de todas no puedo hablar dejo aquí un resumen de como lo he hecho yo.

  1. Subí un CSV con las principales nuevas urls activas de Analytics.
  2. Voy comparando la url que ha dado 404 con cada una de las urls de Analytics. Uso la función soundex() para comparar las urls y re-direcciono hacia la más apropiada.

Dejo aquí un fragmento de código que hace lo anterior en su forma más básica

$fp=fopen(“analytics.csv” , “r” );
while (( $data = fgetcsv ( $fp , 1000 , “,” )) !== FALSE && !$encontrado )
{
if (!strcmp(soundex($url),soundex($data[0])))
{
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: “.$data[0]);
exit();
}
}

Con este ejemplo comparamos toda la url solicitada, yo antes de llegar a este caso he ido comparando por cada carpeta de la url porque en el caso concreto había muchas más probabilidades de acertar por la parte derecha de la url.


Conoce mis servicios SEO.



Servicios personalizados para profesionales, agencias y PYMES

3 comentarios en “SEO y migración o cambio de CMS – Recuperar urls no encontradas (404)

  1. Buenísimo resúmen y explicación Juan!!! justamente ayer estuve resolviendo este mismo tema y no sabes lo que he discutido con mi socio!!! (es que lo tenía que hacer el :P)

    Verdaderamente aunque a muchos le parezca un tema menor dependiendo de la cantidad de url’s y además sólo piensan en el tráfico, la realidad es que este es un tema muy sensible, ya que es posible que una web debe corregir 3 o 4 de ellas, pero posiblemente una de ellas sea la que más negocio y ventas genere y se corre el riesgo de tener que dejar a más gente en el paro…

    un saludo y buen post!

  2. Muy bueno. Por ahora solo había migrado webs corporativas con el 301 que es más que suficiente como bien dices, pero para tiendas Online tu método es genial. Muchas gracias.

Deja un comentario

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