Emezeta.com

Robots.txt : Todo lo que deberia saber


El fichero robots.txt es un archivo de texto que dicta unas recomendaciones para que todos los crawlers y robots de buscadores cumplan (¡ojo! recomendaciones, no obligaciones). Pero comencemos por el principio.

Un crawler es un robot de una entidad (generalmente buscadores) que acceden a las páginas web de un sitio para buscar información en ella, añadirla en los buscadores, etc. También son llamados spiders, arañas, bots o indexadores.

crawler spider robot indexador araña googlebot slurp

Por ejemplo, Googlebot es el nombre del crawler del buscador Google. También existen otros como:

  • Mediapartners-Google, que es el crawler que se encarga de revisar los anuncios de Google Adsense.
  • Googlebot-Image, robot indexador de imagenes del buscador de Google.
  • Googlebot-News, robot indexador de noticias para Google News.
  • Bingbot, crawler de indexación del buscador Bing
  • Slurp, crawler de indexación del antiguo buscador Yahoo!
  • Scooter, del clásico buscador Altavista.

Y muchísimos más. Si establecemos un control en nuestro robots.txt, podremos conseguir una serie de beneficios:

crawlers robots txt robots.txt spiders index
  • Impedir acceso a robots determinados: Puede parecer contradictorio, pero algunos crawlers no nos proporcionarán sino problemas. Algunos robots no son de buscadores, e incluso algunos robots no son ni amigos. Pero de eso ya hablaremos más tarde.
  • Reducir la sobrecarga del servidor: Podrás controlar el flujo de algunos robots. Algunos de ellos son un verdadero descontrol de peticiones que pueden llegar a saturar tu servidor.
  • Prohibir zonas: Nos puede interesar tener disponible una zona en nuestra web, que sea accesible para algunos, pero que no aparezca en buscadores.
  • Eliminar contenido duplicado: Uno de los casos más importantes, que casi siempre es olvidado por los webmasters. Si eliminamos la duplicidad de contenido, los buscadores nos puntuaran muy alto, aumentando el flujo de visitas.
  • Fijar mapas del sitio: También es posible acoplar un sitemap para indicar el buen camino a los robots.

Creación del fichero robots.txt

¿Y entonces, que hay que hacer? Es muy sencillo.

Sólo tenemos que crear un fichero de texto robots.txt y comenzar a escribir en él. Partiré del siguiente ejemplo donde permitimos la entrada a todos los crawlers (igual que sin ningún robots.txt):

User-agent: *
Disallow:

En User-agent debemos introducir el nombre del robot, y a continuación las rutas donde queremos prohibir que acceda. Algunos ejemplos:

  • Disallow: / prohibe la entrada a todo el sitio.
  • Disallow: /foro/ prohibe la entrada a los documentos del directorio foro.
  • Disallow: permite la entrada a todo el sitio.

En algunos casos suele utilizarse en lugar de Disallow, la palabra Allow. Aunque por definición es correcta, es conveniente no utilizarla, puesto que las rutas omitidas se asumen que están permitidas por defecto, y algunos crawlers no entienden la palabra Allow.

Es posible acumular varios Disallow bajo un mismo User-agent, pero no podemos utilizar varios User-agent encima de un Disallow. Veamos un ejemplo:

# Crawler de Bing
User-agent: bingbot
Disallow: /links.html
Disallow: /private/
Disallow: /photos/

Este código impide al crawler del buscador de Bing (Microsoft) acceder a la página links.html, y las carpetas private y photos (y todo su contenido) de nuestro sitio.

Añadiendo el carácter # al principio de una linea podemos escribir comentarios que no interpretará el crawler.

Opciones avanzadas: Comodines

Es posible ir acumulando reglas para distintos crawlers, formando un robots.txt más largo y completo. Cada vez que escribamos un User-agent deberemos dejar una linea en blanco de separación. Además, existe una ligera adaptación que permiten usar comodines ($ y *) en las rutas en algunos crawlers (sólo Googlebot y Slurp):

User-agent: Slurp
Disallow: /*.js$
Disallow: /2006/*
Disallow: /2007/*
Disallow: /articulos/*/pagina/*

Se está indicando al robot de Yahoo, que no indexe los ficheros que terminen en .js (javascript), direcciones que empiecen por 2007 o 2006 (fechas), ni artículos con la palabra pagina (paginado de comentarios). Estos casos pertenecen a la idea de no indexar contenido duplicado.

En la mayoría de los blogs, puedes acceder a un mismo artículo por las direcciones:

  • blog.com/articulo/titulo, la dirección principal.
  • blog.com/2007/04/, el archivo del mes.
  • blog.com/articulo/titulo/feed, feed RSS del artículo.
  • blog.com/articulo/titulo/pagina/2, pagina 2 de comentarios.

Todo esto es contenido duplicado, una de las razones más importantes de penalización para un buscador, a no ser, claro, que te las ingenies para que sólo sea accesible desde una dirección. A la hora de ver los resultados te asombrarás lo bien que estarás quedando ante los ojos de Google, por ejemplo.

Hay que tener mucho cuidado con usar cosas como Disallow: /pagina o Disallow: /*pagina, puesto que en lugar de bloquear lo que queríamos (carpeta pagina o artículos paginados), terminen bloqueando direcciones como /decorar-mi-pagina o /paginas-para-amigos/.

Reducir frecuencia de rastreo

Si revisas estadísticas y demás, también puedes observar que a veces algunos crawlers «se pasan» revisando nuestro sitio, y funden a peticiones a nuestro pobre servidor. Existe una manera de tranquilizar a los robots:

User-agent: noxtrumbot
Crawl-delay: 30

Con esto le decimos al robot de noxtrum que espere 30 segundos entre cada acceso. Cuidado, porque Crawl-delay puede que no lo soporten todos los crawlers. Bing y Google si lo soportan.

Incluir Sitemap

Finalmente, podemos también incluir un mapa del sitio en nuestro robots.txt de la siguiente forma:

Sitemap: http://www.emezeta.com/sitemap.xml

En RobotsTXT.org podrás encontrar documentación oficial si quieres profundizar y en esta búsqueda de Google encontrarás muchos robots.txt de ejemplo, incluso robots.txt optimizados para tu tipo de web. Además, también tienes un validador de robots.txt.

Conclusiones

Recordar a todos que con el fichero robots.txt no podemos bloquear los accesos por «fuerza bruta». Robots.txt es una recomendación del webmaster a los buscadores, que como son «robots buenos», las seguirán al pie de la letra.

Existen formas alternativas para indicar a los crawlers que secciones deben o no deben indexar, como los meta tag Robots o la cabecera X-Robots-Tag, creados para casos más específicos. Si quieres más información sobre optimización web, te recomiendo el artículo Optimizar el rendimiento de tu página web.

Existen otros «robots malos» (que buscan direcciones de correos o formularios para hacer SPAM) que no dudarán en acceder a los lugares que hayas prohibido si lo desean. Para bloquear estos otros robots, deberemos echar mano al fichero .htaccess, pero como decía Michael Ende, eso ya es otra historia...