Existen centenares de robots.txt
Robots.txt para WordPress

El archivo Robots.txt es un arma que todo WordPress necesita, y ya no sólo a nivel de cms, todo webmaster tiene que tener uno en su web. Es una práctica recomendada por Google.  Con el archivo robots.txt damos información a las “arañas” de los buscadores cuando estos quieren rastrear nuestro sitio para indexarlo.  Pero antes de dar un ejemplo de archivo robots para WordPress vamos a hablar y aprender un poco sobre el.

Existen centenares de robots.txt

Existen centenares de robots.txt

¿Cómo nos ayuda el Robots.txt en WordPress?

WordPress es un excelente gestor, pero por desgracia si no lo configuras bien puedes crear mucho contenido duplicado. Al publicar un post este se publica en la home, en las categorias, en la url del post, en la página de author, en los archivos… en fin, cantidad de contenido duplicado por todos sitios. Un cebo importante para Panda, la actualización de Google que le encanta sancionar páginas con contenido duplicado. Mediante el Robots.txt podemos evitar indexar esas páginas e indexar sólo las que nos interese. Consiguiendo así una mejor indexación del buscador y evitando penalizaciones.

Crear el archivo Robots.txt

La creación de el archivo es muy sencilla, sólo tenemos que abrir el bloc de notas y escribir el contenido dentro. Guardar y nombrarlo como robots.txt. Bastará con subirlo al directorio raiz de nuestro ftp (donde tenemos la página index) y ya estará funcionando.

Recuerda que existe más de un robot, mas bien cientos, y muchos no son buenos, más bien maliciosos. Tanto la gente que copia webs enteras como gente que puede hacer relentizar mucho nuestro blog. Te sorprenderías de la cantidad que hay y el uso que le pueden llegar a dar. Alguno de los bots (robots) más famosos son:

 

¡Roger! ¡Roger! ¡Huuuugh!

¡Roger! ¡Roger! ¡Huuuug!

 

  • Googlebot: La araña de Google.
  • Googlebot-Image: El robot indexador de imágenes de Google.
  • Bingbot: El robor del buscador Bing.
  • YandexBot: Del buscador ruso Yandex.
  • Roger: El bot de Moz, sin duda el más simpático :)
  • BaiduSpider: El crawler del buscador chino Baidu.
  • ia_archiver: El bot de alexa que también utiliza la famosa Wayback Machine.

 

Puedes echar un ojo a alguna de las listas con base de datos de user-agents conocidos:

 

Funcionamiento y comandos

Para escribir el robots.txt de nuestro blog tenemos que tener en cuenta las funciones que podemos incluir. Generalmente el robots se usa para excluir el acceso de algunos bots a directorios o documentos.

Para ello utilizamos el comando Disallow.  También aunque menos frecuente podemos usar el comando Allow, para indicar el acceso. Esta norma es ignorada ya que por defecto, los rastreadores indexarán nuestro sitio web.

El funcionamiento es sencillo primero utilizamos la regla User-agent: para indicar el nombre del bot al que queremos aplicar la norma . A continuación en la línea siguiente el comando con el directorio o archivo en el que se va a aplicar la norma. Recuerda siempre dejar un espacio siempre después de la declaración.

Hecha una introducción básica ahora toca una explicación técnica de los comandos y usos que existen.  La verdad es que googleando en busca de  otros post de explicaciones sobre el robots me topé con el post que los chicos de Aukera, una empresa de Marketing online de bilbao donde en su blog se encuentra post de lo más interesant. Concretamente el post de @enekovivanco me parece muy bueno y bien explicado ya que atiende a fallos y errores comunes que ha encontrado en sus clientes. Por lo que con su permiso os lo voy a pegar tal cual. También podéis encontrar más información en la guía de Soporte de Google para robots.txt.

El archivo robots: configuraciones avanzadas

robot-googleHasta 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 le han tocado experimentar a enek0, bien en primera persona o a través de preguntas frecuentes con las que se a encontrado de compañeros del marketing online:
[toggle title=”¿Qué pasa cuando la URL de la página termina con una barra “/”?” state=”close”]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…[/toggle]
[toggle title=”Usos de operadores en robots.txt (dólar y asterisco)” state=”close”]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 cualquier cosa que pueda ir en mi lugar”. Mejor verlo con un ejemplo:

User-agent: *
Disallow: /*.htm$
Cuidado roger! Qué te bloquean!

Cuidado roger! Qué te bloquean!

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. [/toggle]

[toggle title=”¿Cómo evitar la indexación de URLs con parámetros?” state=”close”]

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.

[/toggle]

[toggle title=”¿Qué pasa cuando la URL de la página no tiene extensión (ej: no acaba en “.html”)?” state=”close”]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.[/toggle]

[toggle title=”¿Hay que poner una barra “/” después del nombre de la carpeta? ¿Qué pasa si no la pongo?” state=”close”]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.[/toggle]

[toggle title=”¿Pueden incluirse comandos Disallow y Allow en el mismo robots?” state=”close”]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”.[/toggle]

[toggle title=”¿Cómo se tratan las mayúsculas y minúsculas?” state=”close”]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“.[/toggle]

[toggle title=”¿Cómo poner comentarios en nuestro archivos robots.txt?” state=”close”]Puedes crear comentario o anotaciones en tu archivo robots.txt empezando las líneas por #[/toggle]
[toggle title=”¿Cómo saber que funciona correctamente?” state=”close”]En tu cuenta de Webmastertools encontrarás la sección Rastreo > Probador de robots.txt encontrarás toda la información de tu robots, así como si hay algún error o no en el uso que Google hace de el.[/toggle]

Configurar robots.txt para WordPress

googlebot

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-login
Disallow: /wp-admin
Disallow: //wp-includes/
Disallow: /*/feed/
Disallow: /*/trackback/
Disallow: /*/attachment/
Disallow: /author/
Disallow: /*/page/
Disallow: /*/feed/
Disallow: /tag/*/page/
Disallow: /tag/*/feed/
Disallow: /page/
Disallow: /comments/
Disallow: /xmlrpc.php
Disallow: /*?s=
Disallow: /*/*/*/feed.xml
Disallow: /?attachment_id*

Así se excluye la posible indexación de carpetas de sistema y archivos con extensiones que no interesa indexar. Manéjese con cuidado.

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. Existen dos valores que podemos convinar para ellas, el Follow/NoFollow y el Index/NoIndex. Un pequeño extracto del blog de Tomás (deteresa.com) donde nos hace un breve resumen de las combinaciones posibles:

[tabs type=”vertical”] [tabs_head] [tab_title]Index, Follow[/tab_title] [tab_title]NoIndex, Follow[/tab_title] [tab_title]Index, NoFollow[/tab_title][tab_title]NoIndex, NoFollow[/tab_title] [/tabs_head] [tab]Permite la indexación y el rastreo de la página por parte de los buscadores. Es la combinación por defecto y la que se supone cuando careces de esta etiqueta en tus páginas.[/tab] [tab]Evita la indexación pero permite el rastreo. Es la combinación ideal cuando deseas evitar que una página aparezca en el índice de los buscadores.[/tab] [tab]Permite la indexación pero evita el rastreo. Es la combinación que debes utilizar cuando una página contiene enlaces que no necesariamente respaldas (este es el caso de páginas en las que el contenido está generado por el usuario).[/tab][tab]Evita la indexación y el rastreo. La verdad, no hay muchas razones para usar esta combinación.[/tab] [/tabs]

La combinación que interesa como alternativa al archivo robots.txt

Según lo que hemos visto, la que está formada por la pareja NoIndex y Follow. Es la combinación que evita la indexación de una página web en el índice del buscador a la vez que permite el rastreo y el flujo de enlaces.

Por lo tanto 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.

El Archivo robots.txt perfecto para WordPress

Después de ver un estandar, yo y guiado por la fuerza oscura del seo añadiría algunas normas para censurar a los crawles peligrosos más comunes de tal manera que tu robots quede tal que así:

User-agent: *
Disallow: /wp-login
Disallow: /wp-admin
Disallow: //wp-includes/
Disallow: /*/feed/
Disallow: /*/trackback/
Disallow: /*/attachment/
Disallow: /author/
Disallow: /*/page/
Disallow: /*/feed/
Disallow: /tag/*/page/
Disallow: /tag/*/feed/
Disallow: /page/
Disallow: /comments/
Disallow: /xmlrpc.php
Disallow: /*?s=
Disallow: /*/*/*/feed.xml
Disallow: /?attachment_id*

roger's rox