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.
¿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:
- 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:
- https://www.aqtronix.com/
- http://www.robotstxt.org/db.html
- http://www.user-agents.org/
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
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 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$
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
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*
Adrian Castello
Muchas gracias jonathan por tu post. Me ha venido muy bien para hacerle seo a mi web cloudcluster.es
toni
Buenas, gracias por compartir esta valiosa información, yo estoy empezando en el mundo de las webs, y en concreto con wordpress, tras leer este fabuloso artículo, ¿ me recomendarías que configurara mi robots.txt tal como tu muestras en el último cuadro?
Saludos y gracias de antemano
Ricardo
Tengo mi archivo Robot de esta manera, en la descripción de google dice que no puede dar descripción de la página por que ni puede entrar a robot, este archivo esta bien así ?
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Marcos
Una pregunta… Por que no tienes en el robots.txt de tu pagina los dissallow de los agents que comentas en este articulo? Para todos los agents tienes mas excepciones de las que pone aqui. Son recomendadas? Valen para todos los worpress? Mi sitio es estudiolife.es, me recomiendas copiar tu robots.txt y añadir los disallow de los robots que pones aqui?
Muchas gracias de antemano.
Cristian M. Piñol
Genial!!
Muy útil, llevo buscando el robots.txt perfecto para WordPress desde hace días!!
Gracias y saludos!
Andres
Gracias, voy a probarlo ahora mismo en mi blog http://www.cuentoslargos.com/ de cuentos largos a ver que tal se comporta a partir de hoy. Felicitaciones, te sigo!
Summer
Muchas gracias amigo, este post es de gran utilidad, Saludos y Exito! 😀
JMiguel
Excelente articulo, una pregunta anigo.
Google me esta indexando todo el contenido multimedia y aparecen en los resultados como si fueran entradas, por ejemplo: El logo de mi web o las imagenes que utilizo en mis articulos.
Tengo configurado el sitemap con un noindex para el multimedia.
Que puedo hacer? Espero puedas ayudarme, saludos y gracias.
JValenzuela SEO freelance Barcelona
Hola JMigiel, si no quieres que eso pase lo mejor que puedes hacer es marcar las páginas de multimedia con un meta robots noindex,follow en el header , puedes hacerlo con el plugin de yoast seo
amaya
Genial, muy bien explicado y claro
Antuan
Perdon, pero..,, esto es correto?: Disallow: //wp-includes/
Hay dos // seguidas
Miguel Zayas
Graciassss
Alfredo
Gracias por tu información, es muy completa.
Acabo de hacer un archivo cogiendo varias líneas que comentas para así tenerlo bien completo para mi página web. Ya te contaré que tal me funciona.
Yo leo mucho los post en http://antoniogonzalezm.es/ ya que me parecen buenos y son muy útiles para mi. Poco a poco voy mejorando mis conocimientos.
dAdA bcn
Gracias! Voy a probarlo en mi sitio http://dadabcn.esy.es/ Saludos!
Xavi
Genial! és lo que andava buscando. Sin duda lo aplicaré para en mi sitio web de diseño gráfico en Barcelona. Lapizazul.
Muchas grácias por el post!
Miguel
Buen aporte, para modificar el robot.txt de mi web, https://emimarket.net le ha venido genial!
juan
zzzzzz… post demasiado largo, trata de ir al punto