blog banner

Que nos encuentren, pero bien: El archivo Robots.txt

Decoración - scrabbleUna de las cosas que debemos evitar es que un buscador encuentre cosas que a nuestro criterio de desarrolladores web no debería encontrar, ya sean datos internos de un portal web como pudieran ser archivos complementarios o imágenes que no aportan valor al sitio. O sea que se mostraran resultados basura, que lo que hacen es dificultar el encontrar la información útil y de paso que se vean los posibles «trapos sucios» de la implementación de la web.

Otro caso más grave son los datos de obligatoria publicación pero que no deberían ser indexables (que los buscadores los incluyan como posibles resultados). Con esto me refiero a boletines oficiales y documentos similares, que contienen información privada y a veces comprometedora. Estos deben publicarse obligatoriamente, pero lo que no deberían es propagarse y que el vecino vea fácilmente que debes una multa o que tienes unos terrenos en Villalamula del Borrego en proceso de recalificación.

Y es que los buscadores como Google, Bing, Yahoo, …. para encontrar páginas web y poderlas mostrar como resultados lo que hacen (más o menos, a modo fácil) es lo que haríamos nosotros: ir a una página web ver de qué va, ver dentro de esta si tiene algún enlace a otra página, acceder a esta otra página, ver de que va, ver si tiene otro enlace dentro,  acceder, … y así constantemente, guardándose los datos de todo lo que visita para podernos luego ofrecer los resultados de manera rápida cuando hacemos una búsqueda, consultando en su propio sistema estos datos. Esto lo hacen automáticamente aplicaciones llamadas «bots» (De robots, más información aquí ) o más concretamente arañas (que son el tipo concreto de bots que recorren la red) y siguiendo este sistema acceden a una página cada cierto tiempo con el fin de actualizar la información que habían guardado anteriormente por la actual.

Conociendo el funcionamiento básico de los buscadores, puedo proceder con el tema principal del artículo.

Para evitar los casos descritos al principio de este post, se creó un estándar de fichero que permitirá que los buscadores indexen lo que nosotros deseemos. Bueno, más bien que recomendará lo que no deberían indexar. Y esto es así porque la información sigue estando ahí y es el buscador en cuestión el que decide implementar este estándar haciendo caso o no al fichero en cuestión. Pueden haber bots que precisamente les interese ver la información que ocultamos, que consultarán este fichero y nadie les puede impedir que accedan al contenido. No es preocupante, porque al fin y al cabo es información que hemos hecho pública pero es un ejemplo para reafirmar que se trata de una recomendación que hacemos al bot sin más.

El fichero que nos permitirá indicar qué secciones de la web queremos que NO sean indexables por los buscadores se llama robots.txt, se editará con cualquier editor de texto sin formato, y se ubicará en la raíz del sitio web.

La sintaxis del fichero es bastante simple. Consta únicamente de entradas seguidas del tipo:

User-agent: agente
Disallow: ruta

Donde indicamos el user agent (ahora digo lo que es) y a que ruta le deshabilitamos el acceso.

Vamos a por el primer punto: El user agent es el nombre particular del bot al que queremos hacer referencia. Cada bot tiene un nombre que lo identifica y es este nombre el que se deberá indicar en el fichero. A continuación listo unos cuantos nombres:

Buscador User Agent
Google «Googlebot», Más información
Bing «msnbot», «bingbot»
Yahoo! «Yahoo SLURP»,»SLURP»

Pero como vemos con una simple búsqueda hay muchísimos más, recopilados en muchísimos sitios web.

robot BenderEntonces el valor para la entrada user-agent esta claro. Si queremos que nuestra indicación únicamente afecte al buscador de Microsoft indicaremos:

User-agent: msnbot

¿Pero solo uno? Yo quiero que no lo vea más de uno. Mmmm, se podría poner lo siguiente, pero no se garantiza que sea compatible

User-agent: msnbot
User-agent: Googlebot

A ver, pero es que lo que queremos es que NINGÚN bot indexe esta ruta. ¿es necesario poner todos los nombres? ¿TODOS? Pues no, para ello tenemos el  *, que indicará que aplica a todos los bots indistintamente.

User-agent: *

Este último es el caso de uso más habitual ya que, salvo alguna extraña excepción, o queremos que se vea un contenido o no, independientemente de qué bot haga la búsqueda.

En lo que respecta a la opción Disallow, nos permite indicar qué carpeta o fichero deseamos que NO se indexe en los buscadores. Puede ser un path completo o parcial, de manera que todo lo que empiece por el texto que le pasamos quedará excluido del rastreo del bot.

Con ejemplos se entiende todo mucho mejor así que procedo con

Ejemplos

En una web con la siguiente estructura

– index.html
– robots.txt
+ dummy
        – unaPagina.htm
        – otraPagina.php
        – documento.pdf
+ contenido
         – paginaConContenido.html
         – dummy.html
         – portada.html
         + documentacion
                       – documento.pdf

Si tenemos el fichero robots.txt con la siguiente entrada

User-agent: *
Disallow: /dummy

el bot ignorará en su búsqueda la carpeta dummy y el  fichero dummy.html dentro de la carpeta contenido ya que ambas empiezan con la cadena indicada.

Sin embargo para que únicamente ignore la carpeta dummy y su contenido, permitiendo la indexación de dummy.html deberemos indicarlo de la siguiente manera:

User-agent: *
Disallow: /dummy/

La sutil diferencia es que hemos agregado una barra / al final del literal indicando que ahí finaliza la ruta que indicamos y ya no da lugar al .html del fichero.

También podemos indicar múltiples carpetas a ignorar:

User-agent: *
Disallow: /dummy/
Disallow: /contenido/documentacion/

Indicar que no se indexe absolutamente nada dando el elemento / que simbolizará la raíz del sitio web:


User-agent: *
Disallow: /

O que se indexe todo, dejando el atributo en blanco

User-agent: *
Disallow: 

Incluso podemos indicar que se indexe todo únicamente si se trata de Yahoo quien hace la búsqueda

User-agent: *
Disallow: /
User-agent: SLURP
Disallow: 

Si existe el fichero robots.txt pero se encuentra vacío, el bot interpretará que no existe, por lo que indexará todo el sitio web.

En definitiva, este es uno de esos detalles de una buena implementación web que no se ven a simple vista pero que aportan un valor añadido de accesibilidad del entorno y que deberían estar en el manual de buenas prácticas del desarrollador web.
 
Como bonus para el lector que ha llegado hasta este punto dejo un link a la iniciativa humans.txt que humaniza la web, reconociendo sus autores a través de un fichero similar al tratado en este post.

Deja un comentario

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