18 jun 2007

Google indexa mal Blogger. En casa del herrero...

Hay problemas que tienen una fácil solución, pero sin embargo uno no consigue encontrar a nadie que sepa cómo meterles mano. Google usa un robot llamado googlebot, que rastrea las páginas y las indexa. No es un robot como C-3PO, no. Es un programa informático que va buscando páginas web, analizando su contenido e indexándolas, es decir, se las apunta para que cuando alguien busca algo en Google, pueda ofrecerle esa página en sus resultados. Así que Google visita un blog como el mío, y ve qué contenidos hay, y se los apunta. Por ejemplo, el cabo Bojador. Y apunta la dirección http://lironcareto.blogspot.com. En realidad el artículo del cabo Bojador tiene su propia dirección, llamada permalink, y que es http://lironcareto.blogspot.com/2007/06/cabo-bojador.html, pero claro, como el artículo del cabo Bojador aparece en la primera página, y allí es donde lo encuentra Google, apunta ese artículo a la dirección de la página principal (http://lironcareto.blogspot.com). El problema es que yo introduzco bastantes artículos cada día, con lo que probablemente esta tarde, el artículo del Cabo Bojador ya no esté en la página principal. Conclusión: cuando alguien busca en Google "cabo Bojador" y pincha en el enlace, llega a http://lironcareto.blogspot.com donde ya no está el artículo del cabo Bojador, y muchas veces el usuario no tiene la paciencia de ir a mirar entre los enlaces de la derecha de artículos anteriores. El resultado de esto es que mucha de la gente que llega a este blog desde Google, busca un contenido que este blog contiene, pero que no encuentra, y por tanto se marchan sin obtener la información que buscaban. Google podría adelantarse a este comportamiento (máxime siendo propietaria de Blogger), indexando los permalinks, pero no lo hace.

El comportamiento de los robots de búsqueda, como el googlebot, es modificable. En el código HTML de Blogger puede cambiarse yendo a la plantilla, y editando el HTML. La forma de modificar ese comportamiento es mediante una etiqueta META. Las meta son etiquetas que van en la cabecera y que tienen un propósito general. En concreto, la META para robots tiene un aspecto así:

<meta name='robots' content='[index|noindex][,follow|nofollow]'>

No voy a profundizar mucho pero baste decir que INDEX se usa para que el robot de turno indexe la página, y NOINDEX para que no la indexe, lógicamente. Yo quiero que googlebot indexe mi página, claro. Por otro lado FOLLOW se usa para que el robot de turno siga los enlaces de la página, y NOFOLLOW para que no los siga. El problema es que esta etiqueta va en la cabecera de la plantilla, por lo que si le pongo NOINDEX para que google no indexe http://lironcareto.blogspot.com no indexará tampoco ninguno de los permalinks, y ...Luego existo desaparecerá de Google. Por otro lado, si coloco INDEX en dicha etiqueta, googlebot seguirá indexando mi página de inicio, y seguiré recibiendo en la página de inicio visitas de usuarios que se marcharán frustrados sin encontrar lo que buscaban.

Evidentemente esto es algo que no me pasa sólo a mí. Todos los usuarios de Blogger (y son varios cientos de miles) están en la misma situación, y me atrevería a decir que los de otros blogs (blogalia, WordPress, etc) están en las mismas. Así que me puse a buscar información en Google. La única solución posible era meterle un NOINDEX a dicha etiqueta, con lo que desaparece el blog de Google. Tras preguntar en la usenet, la respuesta que obtuve era idéntica. Así que finalmente me puse a investigar.

El nuevo Blogger, llamado Blogger BETA o Blogger 2.0 usa XML en la plantilla del blog con una serie de tags que son interpretados por una plantilla XSL. Yo no tengo mucha idea de XML, pero no es demasiado difícil para una bobada como la que yo quería. He visto que una de las etiquetas XML que usa es <b.if /> También he visto que Blogger usa esa etiqueta para saber cuándo está mostrando un permalink o la página principal para colocar o no un enlace en el título del blog. El código que hace esto es:

<b:if cond='data:blog.url == data:blog.homepageUrl'>
  <data:title/>
<b:else/>
  <a expr:href='data:blog.homepageUrl'><data:title/></a>
</b:if>


Así que no ha sido muy complicado sustituir mi etiqueta META para robots por:

<b:if cond='data:blog.url == data:blog.homepageUrl'>
  <meta content='noindex,follow' name='robots'/>
<b:else/>
  <meta content='index,follow' name='robots'/>
</b:if>


De este modo, cuando googlebot visite mi página de inicio, no la indexará, mientras que cuando visite un permalink, la indexará. He publicado la investigación en la usenet por si le sirve a alguien.

1 comentarios. Deja alguno tú.:

Ruud dijo...

Que gran publicacion, esto no se encuentra en ninguna parte, eres un genio, gracias. me ha servido mucho.
he optimizado el blog por todas partes y esto era algo que no habia podido lograr hasta que me tope por mera casualidad con esta entrada, felicitaciones.

Related Posts Plugin for WordPress, Blogger...