Cabalgando los gusanos

“Debes cabalgar por la arena a la luz del día,
para que Shai-hulud vea y sepa que no tienes miedo.”

Dune, de Frank Herbert

“Si no está en Google, no existe”. Esta frase tan categórica es cierta tanto para comercios on-line o webs corporativas, como para nuestro blog personal. Cuando necesitamos localizar información en Internet, vamos a Google. Y quien dice Google, dice Yahoo, MSN, o cualquier otro buscador. Tenemos que estar ahí.

Éstos buscadores usan “bots” o “spiders” para indexar el contenido de nuestras páginas, programas que periódicamente recorren todos los sitios que ya conocen en busca de actualizaciones y nuevos enlaces a través de los cuales descubrir, procesar e indexar más y más páginas

A nadie se le escapa que el trabajo de éstos programas es beneficioso, pero normalmente no tenemos en cuenta que generan tráfico extra a nuestra web. Aunque parezca mentira, conozco sitios en los que el tráfico de GoogleBot y compañía (ojo, hablo del propio bot, no de visitas dirigidas desde el buscador) consumía hasta un tercio del ancho de banda total de los accesos. Estamos hablando de GIGAS de tráfico al día.

Además los buscadores penalizan la información repetida: si tenemos varias páginas con contenido igual o muy similar, o aún peor, si podemos cargar una misma página con varias URLs distintas, podemos llevarnos sorpresas desagradables como páginas que no aparecen en los resultados de una búsqueda en favor de un feed o un resumen (índice de sección, categoría, etc.) con contenido similar, o páginas con un pagerank bajo porque éste se “diluye” entre varias URLs.

Por ello es importante aprender cómo funcionan éstos bots para saber cómo optimizar su paso por nuestro sitio web, cómo “llevarlos de la mano” hasta la información que queremos priorizar para así mejorar nuestro posicionamiento en los resultados, minimizando a su vez cuando sea posible la cantidad de información transmitida para no saturar nuestra conexión y servidores.

HTTP

GoogleBot, Yahoo! Slurp, etc. se comunican con nuestro servidor web mediante el protocolo HTTP, igual que haría cualquier otro cliente. Y son clientes “educados” que cumplen el protocolo.

Mucha gente desconoce que el protocolo HTTP 1.1 tiene métodos para controlar desde el servidor el funcionamiento de la gestión del contenido por parte de las cachés clientes (en proxies, navegadores, etc.) con una serie de cabeceras que indican la fecha de modificación del contenido, si ha sido modificado desde el último acceso, y una fecha de validez (o caducidad, como queramos verlo) hasta la cual indicamos que no es necesario volver a acceder a la página a refrescar el contenido.

Usando éstas cabeceras HTTP (Cache-Control, Last-Modified, Etag y Expires, junto con el código de respuesta 304) podemos ajustar cada cuánto tiempo cada cliente, sea Google, Yahoo, un proxie o la caché de nuestro navegador, va a venir al servidor a refrescar el contenido, y una vez que venga, devolverle la página completa si ésta ha sido actualizada o ahorrarnos el tráfico informándole de que la versión que tiene en caché aún es válida, renovando a su vez su periodo de validez. Es una forma de reducir drásticamente el tráfico de nuestros servidores y mejorar los tiempos de respuesta de cara al cliente, visitantes normales con un navegador también. Eso sí, siempre que tengamos muy clara la “caducidad” de cada una de las páginas según su contenido, ya que si nos pasamos podemos provocar que no se “vean” las actualizaciones.

Por ejemplo, para un sitio web con contenido actualizado a diario, podríamos configurar: para la portada una validez de cinco minutos; para cada artículo del día, quince, por si se actualizan para corregir cualquier error o puntualizar algún detalle; para el contenido de entre uno y diez días de antigüedad, doce horas o un día; y para lo que tenga más de diez días… un año, o más si asumimos que el contenido tan viejo no se va a actualizar nunca.

¿Cómo hacer uso de éstas cabeceras? La mayoría de servidores web (Apache, lighttpd…) usan la fecha de modificación de ficheros estáticos de forma automática para generar éstas cabeceras. Para el contenido dinámico, o forzamos unos datos según URLs en la configuración del servidor web, o bien generamos éstas cabeceras en programación.

Aparte de todo el control de caché, hemos comentado que no es conveniente que varias URLs apunten a un mismo contenido para que éste sea único y esté unívocamente identificado por su dirección. Si por ejemplo tenemos varios dominios (.com, .es y .net), o hemos refactorizado recientemente la programación y hemos tenido que reestructurar las URL, lo que lo que deberíamos hacer es redirigir todos los accesos a una URL única (dominio principal y estructura de directorios “canónica”) mediante una respuesta HTTP 301, de forma que centralicemos todo el contenido en un único dominio, y que cada página tenga una única ruta.

robots.txt

En el fichero robots.txt podemos definir una serie de reglas para denegar el acceso a ciertas URLs según el User-Agent del bot que esté consultando la página. Es un protocolo establecido hace muchos años, y de nuevo GoogleBot y sucedáneos lo cumplen al pié de la letra. Y como su nombre indica, es un protocolo exclusivo para bots: un navegador normal no lee éste fichero ni se rige por las reglas que aquí definamos.

¿Utilidades? Varias: denegar el acceso a determinados bots a ciertas partes “privadas”, o que por cualquier motivo no queramos que se indexen, de nuestra web; bloquear completamente el acceso a ciertos bots que no nos interesen (porque es un buscador en el que no queremos aparecer, porque nos consulta demasiado rápido y nos satura…); bloquear el acceso a los feeds RSS para evitar que se indexen, ya que duplican contenido y pueden llegar a tener precedencia en los resultandos sobre las páginas “reales”; etc.

Sin embargo, este fichero es algo que hay que usar con cuidado: hay que tener muy claro que no le estamos diciendo a un bot que no indexe una página, si no que NO ENTRE en ella. Y si no entra, no descubrirá (ni seguirá e indexará) los enlaces que puedan “colgar” de ella. Así que si no somos cuidadosos podemos acabar bloqueando el acceso a partes completas de nuestra web que si que nos interesaría que se indexaran.

Como mínimo, si tenemos una estructura de carpetas/URLs decentemente organizada, si que podemos filtrar sin peligro feeds, carpetas con estilos CSS, carpetas con ficheros Javascript, carpetas con imágenes (si no queremos aparecer en Google Images), etc.

METAs y rel=”nofollow”

Durante muchos años el protocolo para facilitarle la vida a los bots informándoles nosotros del contenido (content) y carácter (keywords) de nuestras páginas fue mediante tags META en el encabezado (<head>) de las páginas. Sin embargo con el paso del tiempo se vio que al depender sólo del buen hacer (o mejor dicho, de la buena fe) del webmaster eran fáciles de falsear, con lo que hoy en día prácticamente ningún buscador les presta mayor atención y se fijan principalmente en el contenido real en el cuerpo (<body>) del fichero HTML. Sin embargo si que hay un META que nos va a ser útil para marcar el camino a los bots: el meta “robots”.

Éste META puede contener dos valores de los dos pares (no)index y (no)follow: index/noindex indica al bot que considere (o no) el contenido de la página actual para su indexación, mientras que follow/nofollow le indica que siga o no todos los enlaces que encuentre en la página. Con el primero controlamos si no queremos que el bot se fije en el contenido de la página actual, mientras que con el segundo indicamos si queremos que continúe rastreando a partir de la página actual o que vuelva a la página anterior. Los valores por defecto si no indicamos lo contrario serían “index, follow”: indexar la página actual y seguir todos los enlaces.

Utilidad: evitar contenido repetido evitando la indexación de páginas de resumen, portadas, categorías, etc. en favor de las páginas con los artículos completos. Esto lo haríamos con:

[code lang=”html”]meta name=”robots” content=”noindex,follow”[/code]

“nofollow” nos sería útil para evitar el acceso de los bots a ciertas partes de nuestra web (como haríamos con el robots.txt) o para “ocultarle” de alguna forma enlaces a webs externas para que no tenga éstas relaciones en cuenta de cara a calcular el PageRank (en el caso de Google).

follow/nofollow en el meta se aplica de forma global a todos los enlaces de la página. Si sólo queremos controlar que no se sigan ciertos enlaces externos, podemos usar rel=”nofollow” en cada enlace de forma individual:

[code lang=”html”]Ejemplo[/code]

Ésto es útil para evitar enlazar páginas de SPAM, p.ej. añadiendo de forma automática éste atributo a todos los enlaces que se puedan introducir en nuestra página por parte del usuario (comentarios, foros…)

Google Sitemaps

Por último, vamos a ver el método de más reciente aparición de todos: el fichero sitemap.xml.

Sitemaps es un protocolo originario de Google para ayudar a su bot a conocer mejor la organización y periodicidad de actualización del contenido de nuestra página, aunque Yahoo y MSN lo han adoptado ya también por lo que podemos considerar que es un estándar “de facto”. Se trata de un fichero XML con una sintaxis bastante sencilla en el que indicamos todas y cada una de las URL de nuestro sitio, su fecha de creación, modificación, una estimación de con qué periodicidad se puede actualizar (o cuánta validez le damos a la información, cada cuánto tiempo tendría que volver el bot a indexarla), y un “peso” con el que indicaríamos la relevancia relativa de cada página con respecto al resto.

En líneas generales puede parecer que todos éstos datos ya se los estábamos dando con los métodos anteriores: las cabeceras HTTP para indicar la validez, el robots.txt y el follow/nofollow para controlar dónde entra… la diferencia fundamental radica en que sin el sitemap, el bot de turno accede a nuestra página y va siguiendo enlaces, descubriendo como medianamente puede cada una de los distintos archivos que forman nuestro sitio; mientras que con el sitemap, nosotros le damos una lista de todas y cada una de las URLs que queremos que indexe, además de la importancia relativa que le damos a cada página.

Resumen

Hemos visto varias técnicas para guiar a los bots de los buscadores en su paso por nuestra web, indicándoles dónde entrar y dónde no, qué indexar y qué no, con qué periodicidad volver y si ha habido actualizaciones en nuestra página. Nos hemos centrado en los métodos para minimizar el tráfico extra que nos van a generar las visitas de éstos bots, pero maximizando su productividad.

Ésto es sólo una pequeña parte de todo lo que deberemos tener en cuenta a la hora de diseñar nuestra web y su contenido de cara a conseguir un buen posicionamiento. En internet hay infinidad de artículos sobre SEO orientados a cómo construir y organizar la maquetación HTML de la página, cómo escribir titulares, resúmenes, cómo y dónde enlazar a otras páginas, etc.

Por último, recordar que aparte de todo lo que hemos comentado aquí y podamos leer en cualquier otro artículo similar, no hay que olvidar la documentación oficial de cada uno de los buscadores, así como las herramientas que ellos mismos facilitan a los webmasters:

2 comentarios sobre “Cabalgando los gusanos”

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.