Foros de los productos de Google

Re: ¿cómo cambiar 47.000 URLs sin que Google mate una web en el intento?

Javier Casares May 22, 2011 8:28 AM
Posted in group: Webmasters

Categories: Rastreo, indexación y ranking :

Hola a todos!

A ver, este sistema de redirección es independiente de cualquier CMS (Joomla, etc...) y requiere saber un poco de programación y bases de datos.

Básicamente (voy a intentar poner un ejemplo exagerado pero que sirva de visión global) la idea es:

1. tengo una WebAntigua que "voy a eliminar"

2. tengo una WebNueva que "quiero indexar"

3. quiero hacer redirecciones 301 de la WebAntigua a la WebNueva para traspasar todo el peso de lo que tenía conseguido hasta ahora.

En este caso el punto 1 y 2 son tan sencillos como "borrar" toda la web vieja y "poner" la web nueva. Pero antes de eso hay que tomar los distintos patrones de URL; esto implicaría, por ejemplo:

WebAntigua:

1. http://example.com/content/view/[idcontenido]/[idcategoria]/

WebNueva:

1. http://example.com/[idcategoria]/[url-categoria]/[url-subcategoria]/[idcontenido]-[url-contenido].html

Como en el nuevo sistema no "pisamos" las URL de la WebAntigua ni la WebNueva, podemos jugar con las redirecciones. En este caso tendríamos un .HTACCESS similar al siguiente:

DirectoryIndex index.php
ErrorDocument 404 /error.php
RewriteEngine on
RewriteRule ^content/view/([0-9]*)/([0-9]*)/ contenidoantiguo.php?idcontenido=$1&idcategoria=$2

Como bien comentaban antes, el $1 corresponde a la primera variable (en este caso la expresión regular que dice que es válido sólo numercaión con cifras entre 0 y 9) y el $2 a la segunda variable (igual). Como información, otras expresiones regulares "habituales":

([0-9]*) = sólo números
([a-z0-9]*) = sólo números y letras en minúscula
([A-Za-z0-9]*) = sólo números y letras en minúscula y mayúscula

Una vez tenemos esto, las URL de la WebNueva funcionarán con normalidad, y las URL de la WebAntigua como coinciden con este formato del .htaccess irán a llamar a ese fichero que crearemos y que tendremos que programar. El fichero será algo tal que así:

contenidoantiguo.php (NOTA: no he incluido configuración de seguridad, sólo ideas de proceso)

< ?php
$idcontenido = $_GET["idcontenido"];
$idcategoria = $_GET["idcategoria"];
//conectamos al SQL
$res = mysql_query("SELECT idcategoria, urlcategoria, urlsubcategoria, idcontenido, urlcontenido FROM noticias WHERE idcontenido='$idcontenido' AND idcategoria='$idcategoria'");
//desconectamos del SQL
$data = mysql-fetch_object($res);
$urlnueva = "Location: http://example.com/".$data->idcategoria."/".$data->urlcategoria."/".$data->urlsubcategoria."/".$data->idcontenido."-".$data->urlcontenido.".html";
header($urlnueva, true, 301);
header("Expires: Mon, 1 Aug 2011 00:00:00 GMT");
? >

Con esto le indicaríamos a los buscadores que han de hacer una redirección de la antigua URL a la nueva y que la han de mantener así durante los próximos N meses (nmi recomendación es que eso se calcule automático y le indiquéis de 3 a 6 meses, no más, debido principalmente a los ciclos de reindexación del propio Google).

Con esto conseguiríais que, el 80% de la web (si es mediana/grande) se migre en un periodo de unas 4-6 semanas y que el el siguiente 20% se migre las siguientes 8-10 semanas. Todo dependerá de la cantidad de enlaces entrantes externos que tengáis, ya que mientras esos enlaces estén, Google seguirá visitando las páginas antiguas.

Una vez pasen los 3-6 meses, lo mejor es eliminar esta redirección e incorporar el famoso "código 404 Not Found" y, si fuera muy pensado y no desaparece, hacer uso de un "código 410 Gone".