29 May 2014
robots.txt
Lectura: 15 mins.
|
Dificultad:

Deja de configurar mal el archivo robots.txt

Google recomienda e informa sobre el uso de herramientas como el archivo robots.txt o el sitemap (por ejemplo en formato xml) para hacer un mejor rastreo de la información que compone nuestros sitios web. Esto teóricamente les facilita bastante la vida porque “guía” a sus arañas o robots rastreadores hasta el contenido relevante en un tiempo más reducido que si únicamente siguiesen enlaces o si tuviesen que determinar de manera autónoma qué contenido no debe ser indexado. Hasta aquí todo bien.
robots-txt

En la práctica lo cierto es que no es extraño encontrarse con Google saltándose a la torera el contenido de un archivo robots.txt, indexando páginas y archivos en él contenidos, de la misma forma que son ignoradas de forma casi aleatoria las metaetiquetas robots que incluimos en el código de nuestras páginas. No siempre, pero más a menudo de lo que debería (que debería ser “nunca”). Dicho esto, habrá que conformarse con las herramientas que tenemos y aprender a manejarlas mejor.

Y es que en ocasiones se configura incorrectamente el archivo robots porque damos por supuestas algunas cosas, esperamos que con este artículo se aclaren ciertos conceptos importantes que a menudo afectan al tratamiento que Google hace de nuestros sitios. Empezaremos por lo más sencillo…

Configuración básica de robots.txt

El famoso “robots” es un archivo en formato .TXT que podemos crear y editar con un simple bloc de notas o editor de texto básico (wordpad, notepad). Una vez creado habrá que darle ese nombre concreto (robots.txt) y colgarlo en el directorio raíz de nuestro sitio web, ya que es el único sitio donde lo podrán encontrar sin problemas los buscadores. La configuración básica del archivos robots es bastante sencilla, incluye únicamente dos parámetros: el robot al que nos dirigimos, y una instrucción dándole o quitándole permiso para indexar algo (un archivo, una carpeta, todo, nada).

En otras palabras, se trata de decirle a cada Bot (una especie de rastreadores – arañas – que Google tiene pululando por los millones de páginas web que existen para estar al día de su contenido y poder mostrarlo correctamente en los resultados de búsqueda) a qué información expresamente puede (o NO puede) acceder para leer e indexar dicha información. Ni que decir tiene que, por defecto, si no se le dice nada Google devorará toda la información a su paso y la incluirá en su mastodóntico índice de contenidos web.

Un ejemplo sencillo y básico del contenido de un archivo robots.txt sería el siguiente:

User-agent: *
Disallow: /

Como puede apreciarse, primero se define el “user-agent” o Bot al que va dirigida la orden (bien el de Google web search, o Google Images, o Bing…) y después qué páginas han de ser ignoradas (con el comando Disallow) o explícitamente indexadas (Allow). En este caso se dice que para todos los robots (con un asterisco) deberán ignorarse -no indexarse- todas las páginas (con la barra “del siete”, así sin nada más detrás, le hacemos ver que es una orden para todo el directorio raíz).

User-agent: Bing
Disallow: /

Con este ejemplo le estaremos diciendo al robot de Bing que no rastree nada de nuestro sitio. Por omisión, el resto de robots incluido el de Google podrán rastrear e indexar todo el contenido de nuestro sitio.

User-agent: Bing
Disallow: /documentos/

Un pasito más: le hemos dicho a Bing que no indexe la carpeta “documentos”. En este caso Google indexará por omisión todo el contenido del sitio, mientras que Bing indexará todo excepto el contenido de la carpeta “documentos”. De esta forma queda claro que, para definir una carpeta en el robots, hay que colocar (tras la barra inicial que irá siempre) su nombre más una barra adicional al final.

User-agent: *
Disallow: /pagina1.html
Disallow: /pagina2.php
Disallow: /documentos/pagina3.html

Con este robots.txt estamos diciéndole a todos los robots que no indexen 3 páginas en concreto: “pagina1.html”, “pagina2.php” y “pagina3.html” que se encuentra en la carpeta documentos.

User-agent: Googlebot
Allow:

Hemos introducido el comando “Allow” cuya función es la inversa al “Disallow” pero hemos quitado la barra “/” posterior, así que le estamos diciendo que SÍ puede indexar NADA. A primera vista parece que esto debería funcionar exactamente igual que un “Disallow: /” impidiendo la indexación del sitio web al completo, pero en realidad no es así.

Estamos ante uno de los errores más susceptibles de ser cometidos a la hora de configurar el archivo robots, porque hay que tener en cuenta ciertas consideraciones importantes en relación al comando “Allow” que es bastante puñetero:

  • Sólo tiene sentido cuando se acompaña de un “Disallow”: se trata de una orden no restrictiva, así que cuando va “solo” no es aplicable. Es decir, por defecto Google puede indexar todo, así que si únicamente se le dice qué SÍ puede indexar, le dará igual, seguirá indexando todo. Incluso en el caso del ejemplo anterior, donde se le dice que SÍ puede indexar NADA, pasará de la orden y seguirá indexando todo. Cuidado con esto.
  • En la teoría las reglas se aplican en orden, a partir de la primera, con lo cual los “Allow”, al ser excepciones a los “Disallow”, deberían ir primero. Si bien en la práctica los principales buscadores lo interpretarán bien aunque no lo hagas así.
  • El comando “Allow” no es parte oficial del estándar, si bien Google y el resto de “los grandes” lo soportan perfectamente, para ciertos robots puede llegar a ser incluso problemático.

Dudas frecuentes con el archivo robots: configuraciones avanzadas

Hasta aquí parece sencillo pero con el trastear continuo en el tiempo te van haciendo falta nuevas configuraciones y comienzan a surgir las dudas, ¿qué se puede hacer con el archivo robots?. Ahí van algunas dudas que me ha tocado experimentar, bien en primera persona o a través de preguntas frecuentes con las que me he encontrado de compañeros del marketing online:

¿Qué pasa cuando la URL de la página termina con una barra “/”?

A menudo sucede, especialmente en sitios web montados sobre plataformas como WordPress, que puede haber una página en nuestro sitio con esta estructura en su URL: “midominio.com/servicios/“. En este caso dicha URL es una página donde se muestran los servicios de una empresa, si bien es posible que por debajo de ella existan páginas del tipo “midominio.com/servicios/nombre-servicio1” o similar. Pero ¿cómo le decimos al robots que excluya únicamente la página superior, sin que por ello “cape” todas las que están por debajo? La tentación sería:

User-agent: *
Disallow: /servicios/

Pero como ya hemos dicho, en este caso el robot entenderá que la orden afecta a toda esa carpeta o directorio. Pero no es eso lo que queremos! Para decirle a los robots que sólo nos referimos a esa página concreta, tendremos que utilizar el operador dólar (“$”) que sirve para especificar el final de la URL. Así:

User-agent: *
Disallow: /servicios/$

De esta forma le decimos al robot que no indexe las URLs que terminen exactamente de esa forma, siendo la única URL de ese tipo la que queremos desindexar precisamente. Y esto nos lleva al uso de expresiones regulares en robots.txt…

Usos de operadores en robots.txt (dólar y asterisco)

Aunque el ejemplo anterior nos sirve para explicar el uso del “$” en el robots, la verdad es que para sacarle el mayor jugo ha de emplearse junto al asterisco “*”. Este último funciona como un comodín, sirve para decir “sustituyo a cualesquiera cosa que pueda ir en mi lugar”. Mejor verlo con un ejemplo:

User-agent: *
Disallow: /*.htm$

Ya hemos explicado que el dólar sirve para decirle que ahí termina la URL, que no puede llevar nada más por detrás aquello que deseemos aplicarle el “allow” o el “disallow”.
En el caso del asterisco le estamos diciendo que puede sustituirlo por lo que quiera, siempre que vaya seguido de “.htm”. Es decir, puede haber varios niveles de carpeta por medio (por ejemplo “/carpeta/subcarpeta/pagina.htm” también sería excluído).

De esta forma en el ejemplo le estamos diciendo a todos los robots que no indexen ningún archivo .HTM si bien les permitimos, a través del dólar, que indexen por ejemplo todos los archivos con extensión .HTML. Esto nos lleva a otra cuestión recurrente…

¿Cómo evitar la indexación de URLs con parámetros?

A menudo nuestro CMS nos genera rutas con parámetros como “midominio.com/index.php?user=1” que deseamos no sean indexadas al poder incurrir en duplicidad de contenidos. Siguiendo el patrón anterior y sabiendo que los parámetros vienen precedidos de una interrogación, habría que aplicar algo como esto:

User-agent: *
Disallow: /*?

Así le decimos que no indexe todo lo que empiece por “lo que sea” pero que luego tenga una interrogación, seguido de lo que sea. Seguro que alguno se ha perdido en este último paso, que tendría la tentación de haber puesto “Disallow: /*?*” para asegurarse de que después de la interrogación va algo más, los parámetros. Pues no, resulta que este tipo de expresiones regulares suponen por defecto que, tras lo que le decimos, puede ir cualquier cosa. Por eso cuando decimos “Disallow: /servicios/” el robot entiende que todo lo que vaya por detrás (ej: /servicios/auditoria) tampoco lo indexará, porque responde al patrón definido.

Pero cuidado porque esto es muy peligroso!! Un ejemplo lo tenemos a continuación:

¿Qué pasa cuando la URL de la página no tiene extensión (ej: no acaba en “.html”)?

Pongamos que existe una página que no queremos indexar cuya URL es exactamente ésta: “www.midominio.com/servicio”. Podríamos caer en el que posiblemente sea el mayor error cometido con el uso del archivo robots.txt a nivel mundial! :O

User-agent: *
Disallow: /servicio

Algún listo dirá: Así no, eso sirve para capar la carpeta “servicio” entera.
Pues tampoco exactamente. En realidad, como ya hemos explicado antes, el robot va a entender que detrás de eso puede ir cualquier cosa, es decir, va a excluir páginas como:

  • /servicio
  • /servicios
  • /servicio-auditoria
  • /servicio-consultoria/
  • /servicio-consutoria/digital.html
  • /serviciosweb/seo/yandex.php
  • etc.

Entonces, ¿cómo excluyo esa página que no tiene extensión? Así:

User-agent: *
Disallow: /servicio$

De esta forma delimitamos dónde termina la URL, evitando este super-problema que generalmente se pasa por alto al formular los archivos robots.

¿Hay que poner una barra “/” después del nombre de la carpeta? ¿Qué pasa si no la pongo?

Esto ha quedado explicado con el punto anterior: si no se pone barra, el robots estará excluyendo todo lo que empiece de esa manera, corresponda concretamente o no a dicho subdirectorio.

¿Pueden incluirse comandos Disallow y Allow en el mismo robots?

Así es. De hecho su combinación puede ser una forma de definir mejor qué cosas se deben indexar y cuáles no para una determinada carpeta (o para todo el sitio). Un ejemplo…

User-agent: *
Allow: /servicios/$
Disallow: /servicios/

De esta forma le estaríamos diciendo que SÍ indexe la página general de servicios (“midominio.com/servicios/”) pero NO indexe las páginas sucesivas con los servicios concretos (“midominio.com/servicios/auditoria”+”midominio.com/servicios/consultoria”+etc.).
Lo ideal es usar primero el “Allow” que no es restrictivo (por defecto se entiende como permitido indexar todo), para posteriormente incluir el “Disallow”. De esta forma se facilita el trabajo a los robots más “torpes”.

¿Cómo se tratan las mayúsculas y minúsculas?

Hay que tener en cuenta que se distingue entre mayúsculas y minúsculas, en este caso no sirve usar siempre minúsculas. Es decir, un  comando tipo “Disallow: /pagina.html” sí permitiría que se indexase la página “midominio.com/Pagina.html“.

¿Cómo configurar robots.txt para WordPress?

A pesar de que WordPress es una plataforma muy extendida y Google cada vez entiende mejor qué tiene que indexar y qué no, en la práctica siempre se cuelan cosas que “empañan” la calidad de la información indexada de nuestro sitio. Dado que la estructura de WordPress es común a todas las instalaciones, puede definirse un robots tipo para WordPress con las carpetas donde el buscador no debería meter las narices. Téngase en cuenta que esto son unos mínimos, a nada que tiremos de plantillas, plugins y personalizaciones, habrá otras nuevas carpetas que tendremos que “capar”:

User-agent: *
Disallow: /wp-content/ 
Disallow: /wp-includes/ 
Disallow: /trackback/ 
Disallow: /wp-admin/ 
Disallow: /archives/ 
Disallow: /wp-* 
Disallow: /login/

Así se excluye la posible indexación de carpetas de sistema y archivos con extensiones que no interesa indexar. Manéjese con cuidado. De hecho lo MUY recomendable es que cada uno personalice su archivo robots.txt en función del contenido y configuración de su sitio web, ya sea bajo un CMS de código abierto como WordPress o cualquier otra plataforma.

Otras consideraciones: meta robots y sitemap

Recordar que además del robots.txt es posible especificar la conveniencia o no de indexar una página a través de la meta-etiqueta “robots” que puede ser incluida a nivel individual para cada una de las páginas del sitio. Simplemente se trataría de incluir algo similar a esto en el <head> para cada caso:

<meta name=”robots” content=”noindex”>

Como por defecto todo es indexable, la etiqueta tiene más sentido cuando usamos el comando “noindex”, a pesar de que también se puede especificar “index”.

En cuanto al sitemap, dos consideraciones:

  • Es posible incluir en el archivo robots.txt la ruta donde se encuentra el/los sitemap(s) del sitio, sería cuestión de añadir una línea tal que así: “Sitemap: http://www.midominio.com/sitemap.xml” (o donde quiera que se encuentre tu sitemap).
  • Incluir un sitemap para nuestro sitio no es restrictivo, es decir, Google va a indexar todo lo que pueda, independientemente de que esté en tu sitemap o no. Con él únicamente le ayudamos a descubrir las páginas, los medios para que no las indexe son los anteriormente expuestos.

 

Los bots de Google

Como ya se ha dejado entrever antes, existen diferentes Bots / Robots / Crawlers / Arañas que se pasan las horas muertas dando vueltas por la red de redes tragando información como locos. Por ser prácticos y dado que Google se lleva como un 97% de las búsquedas estatales, vamos a detallar los diferentes bots de Google y para qué sirven:

  • Googlebot: Es el bot “general” de Google, así que servirá para restringir todos los demás. Es decir, si nos limitamos a restringir a Googlebot estaremos restringiendo a Googlebot-News, Googlebot-Image, Googlebot-Video y Googlebot-Mobile.
  • Googlebot-News: Ayuda a restringir el acceso a las páginas o posts para su indexación en Google News. A colación de lo anterior, restringir a Googlebot supone no aparecer ni en la búsqueda de Google ni en Google News. Si sólo queremos aparecer en Google News habría que definir algo tal que así:
    User-agent: Googlebot
    Disallow: /
    User-agent: Googlebot-News
    Disallow:
  • Googlebot-Image: Servirá para acotar el acceso a carpetas donde se contengan imágenes que no deseamos sean indexadas. Ejemplo:
    User-agent: Googlebot-Image
    Disallow: /fotos-verano/
  • Googlebot-Video: Lo mismo que lo anterior pero aplicado a la restricción para indexar vídeos.
  • Googlebot-Mobile: Aunque hay bastante controversia y misticismo, se supone que gestiona el contenido indexable para mostrar en búsquedas desde dispositivos móviles. Se supone.
  • Mediapartners-Google: Especifica las páginas que deben ser tenidas en cuenta por parte de Google a la hora de mostrar publicidad de su red, pero sin afectar a su indexabilidad. Por ejemplo con este robots.txt se podrían mostrar anuncios de Adsense en nuestro sitio web, a pesar de que éste no estaría indexado por Google:
    User-agent: Googlebot
    Disallow: /
    User-agent: Mediapartners-Google
    Disallow:
  • Adsbot-Google: Gestiona el acceso para el robot de Adwords encargado de valorar la calidad de la página de destino.

 

Tan importante como conseguir un alto ritmo de indexación, con los robots de Google visitando recurrentemente nuestros sitios más actualizados, será intentar que no se indexe información privada o contenido que pueda considerarse duplicado, entre otros casos. Así que habrá que preocuparse en configurar el archivo robots.txt, las “meta robots” si fuera necesario, comunicarse con Google a través de Webmaster Tools, y todo lo que está en nuestras manos. A partir de ahí toca rezar! XD