{"id":359,"date":"2018-10-03T12:21:13","date_gmt":"2018-10-03T10:21:13","guid":{"rendered":"http:\/\/tecnologiasweb.jsenso.es\/?p=359"},"modified":"2018-10-03T12:21:13","modified_gmt":"2018-10-03T10:21:13","slug":"el-fichero-robots-txt","status":"publish","type":"post","link":"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-robots-txt\/","title":{"rendered":"El fichero robots.txt"},"content":{"rendered":"\n\n\n\n\n\nCon esta entrada finalizo la \u201ctrilog\u00eda\u201d que dedico a los ficheros que considero como imprescindibles en cualquier servidor Web. El fichero robots.txt es, junto a <a href=\"http:\/\/tecnologiasweb.jsenso.es\/el-fichero-sitemap-xml\/\" target=\"_blank\" rel=\"noopener\">sitemap.xml<\/a> y <a href=\"http:\/\/tecnologiasweb.jsenso.es\/el-fichero-htaccess\/\" target=\"_blank\" rel=\"noopener\">.htaccess<\/a>, un elemento fundamental que aporta muchas ventajas desde el punto de vista del posicionamiento, la seguridad y el mantenimiento de cualquier sitio web. Pero antes de hablar de este fichero vamos a hacer un poco de historia, pero poco, que s\u00e9 que no os gusta demasiado.\n\n\n\n\n\nLos robots de indexaci\u00f3n, tambi\u00e9n llamados crawlers, son peque\u00f1os programas inform\u00e1ticos que se encargan de realizar la indizaci\u00f3n de una p\u00e1gina web de manera autom\u00e1tica. Es el mecanismo m\u00e1s r\u00e1pido que existe para actualizar una base de datos, ya que son capaces de trabajar sin cesar, y con multitud de instancias en paralelo.\n\n\n\n\n\nEn 1994 se estableci\u00f3 el <a href=\"http:\/\/www.robotstxt.org\/orig.html\" target=\"_blank\" rel=\"noreferrer noopener\">Protocolo de Exclusi\u00f3n de Robots<\/a>, con el fin de regular c\u00f3mo deber\u00eda ser el comportamiento de estos programas, ya que unos a\u00f1os antes se hab\u00edan producido diversos problemas con respecto a la cantidad de informaci\u00f3n que capturaban de los sitios web o las numerosas peticiones de recursos que realizaban. Desde esa fecha hasta la actualidad se han realizado pocas modificaciones de ese protocolo, siendo una de las m\u00e1s destacadas el uso del microformato \u201c<a href=\"http:\/\/www.robotstxt.org\/faq\/relnofollow.html\" target=\"_blank\" rel=\"noreferrer noopener\">rel-nofollow<\/a>\u201d, del que hablar\u00e9 en otra entrada.\n\n\n\n\n\n\n\nEl fichero robots.txt permite establecer criterios de acceso a un sitio web a estos robots ya que la mayor\u00eda de ellos, cuando llegan a un sitio web, una de las primeras cosas que hacen es leerlo e interpretar las acciones que en \u00e9l se indican. As\u00ed que la funci\u00f3n que tienen es, principalmente, definir qu\u00e9 p\u00e1ginas deseamos que lean (y, por lo tanto, podr\u00e1n ser recuperables por cualquier servicio de b\u00fasqueda) y cu\u00e1les no. La limitaci\u00f3n y la autorizaci\u00f3n para indexar se puede realizar tanto a una \u00fanica p\u00e1gina como a todo el contenido almacenado en una o varias carpetas.\n\n\n\n\n\nEl hecho de que se indique que no se desea indexar una parte concreta del sitio no significa que el contenido ah\u00ed almacenado se convierte en invisible. Tan solo deja de estar\u00a0 localizable por medio de cualquier sistema de b\u00fasqueda (Google, Bing, etc.) pero sigue estando accesible desde la propia web. Por eso este m\u00e9todo es muy bueno para indicar, por ejemplo, que no deseamos que la carpeta donde tenemos contenido temporal o duplicado sea indexada, ya que esto nos conllevar\u00eda una penalizaci\u00f3n SEO.\n\n\n\n\n\nEs muy importante entender que este mecanismo se basa en la buena voluntad de los creadores de ara\u00f1as y crawlers, ya que el hecho de que un sitio web cuente con un fichero robots.txt no obliga a nada, y cualquier programa puede obviar lo que en \u00e9l ponga. Adem\u00e1s, y desde el punto de vista de la seguridad, hay que tener en cuenta que estos ficheros son p\u00fablicos. Una persona puede ir a cualquier p\u00e1gina web principal de cualquier sitio, escribir a continuaci\u00f3n \/robots.txt y podr\u00e1 visualizar las directrices que en \u00e9l se hayan especificado, sacando a la luz todo lo que no queremos que se sepa de nuestro servidor. Por eso, si existe alg\u00fan apartado del sitio web que realmente no deseemos que sea visible quiz\u00e1 el uso de robots.txt no sea la mejor soluci\u00f3n posible.\n\n\n\n\n<h2 class=\"has-large-font-size\"><strong>C\u00f3mo crear un fichero robots.txt<\/strong><\/h2>\n\n\n\n\nDesde el punto de vista t\u00e9cnico, el fichero robots.txt es un archivo de texto en formato ascii, por lo que se puede crear desde cualquier editor de texto simple (bloc de notas, wordpad\u2026). Suele ser muy recomendable emplear cualquier tipo de plantilla de las que existen en la web para ayudar en su creaci\u00f3n. Entre ellas:\n\n\n\n\n<ul class=\"wp-block-list\">\n \t<li><a href=\"http:\/\/tools.seobook.com\/robots-txt\/generator\/\" target=\"_blank\" rel=\"noreferrer noopener\">Robots.txt File Generator<\/a><\/li>\n \t<li><a href=\"https:\/\/www.internetmarketingninjas.com\/seo-tools\/robots-txt-generator\/\" target=\"_blank\" rel=\"noreferrer noopener\">Robots Text Generator Tool<\/a>, de Internet Marketing Ninjas<\/li>\n \t<li><a href=\"https:\/\/smallseotools.com\/robots-txt-generator\/\" target=\"_blank\" rel=\"noreferrer noopener\">Robots.txt Generator<\/a>, de SmallSEOTools<\/li>\n \t<li><a href=\"https:\/\/www.google.com\/webmasters\/#?modal_active=none\" target=\"_blank\" rel=\"noreferrer noopener\">Robots.txt Generator<\/a>, de Ryte<\/li>\n \t<li>O las aplicaciones con las que cuenta <a href=\"https:\/\/www.google.com\/webmasters\/#?modal_active=none\" target=\"_blank\" rel=\"noreferrer noopener\">Google Webmasters Tools<\/a> o <a href=\"https:\/\/www.bing.com\/toolbox\/webmaster\" target=\"_blank\" rel=\"noreferrer noopener\">Bing Herramientas para administradores de web<\/a>.<\/li>\n<\/ul>\n\n\n\n\nTambi\u00e9n es cierto que si se emplea un CMS, en la mayor\u00eda de los casos es posible que este fichero venga ya en la instalaci\u00f3n inicial. Si no es as\u00ed, siempre suele ser una opci\u00f3n instalarse un plugin, una extensi\u00f3n o un m\u00f3dulo para actualizar su contenido o, directamente, crearlo. Esto sucede con <a href=\"https:\/\/wordpress.org\/plugins\/search\/robots.txt\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress<\/a>,<a href=\"https:\/\/www.drupal.org\/project\/robotstxt\" target=\"_blank\" rel=\"noreferrer noopener\">\u00a0Drupal<\/a>,<a href=\"https:\/\/extensions.joomla.org\/extensions\/extension\/?searchall=robots.txt&amp;filter%5Btags%5D%5B%5D=&amp;filter%5Bcore_catid%5D=&amp;filter%5Bincludes%5D=&amp;filter%5Bversions%5D=&amp;filter%5Btype%5D=&amp;filter%5Bhasdemo%5D=&amp;filter%5Bnewupdated%5D=&amp;filter%5Bscore%5D=&amp;dir=DESC&amp;limitstart=&amp;controller=filter&amp;view=extension&amp;layout=list&amp;Itemid=145&amp;clearorders=0&amp;clearfilters=1\" target=\"_blank\" rel=\"noreferrer noopener\">\u00a0Joomla<\/a>, etc.\n\n&nbsp;\n\n\n\n\n<h2 class=\"has-large-font-size\"><strong>\u00bfD\u00f3nde se debe poner el archivo robots.txt?<\/strong><\/h2>\n\n\n\n\nSiempre debe estar en la ra\u00edz del servidor. En un sitio web gen\u00e9rico, si tu sitio es\n<a href=\"http:\/\/www.ejemplo.es\/\">www.ejemplo.es<\/a> deber\u00eda aparecer si tecleas <a href=\"http:\/\/www.ejemplo.es\/robots.txt\">http:\/\/www.ejemplo.es\/robots.txt<\/a>.\nHay que tener en cuenta dos elementos claves en este sentido. Por un lado que el sitio no tenga url can\u00f3nica y, por lo tanto, exista tambi\u00e9n el sitio <a href=\"http:\/\/ejemplo.es\/\">http:\/\/ejemplo.es<\/a>.\nPor otro, que el sitio tambi\u00e9n tenga un servidor seguro:<a href=\"https:\/\/www.ejemplo.es\/\">\u00a0https:\/\/www.ejemplo.es<\/a>. En ambos casos el fichero robots.txt deber\u00eda ser el mismo y, por lo tanto, se tendr\u00eda que duplicar en estos servidores.\n\n&nbsp;\n\n\n\n\n<h2 class=\"has-large-font-size\"><strong>Sintaxis de robots.txt<\/strong><\/h2>\n\n\n\n\nEl contenido de estos ficheros se pueden organizar en bloques, formados por directivas, cada una de las cuales comienza con el agente de usuario. Ese agente de usuario es el nombre de la ara\u00f1a a la que se dirige la instrucci\u00f3n que se est\u00e1 dando. El fichero, por lo tanto, puede tener un \u00fanico bloque para todos los robots (para ello se emplea un asterisco) o bloques concretos para cada uno de los motores de b\u00fasqueda. Esto \u00faltimo suele ser com\u00fan si lo que se desea es establecer directivas concretas para que los robots de spam (tanto de contenido como de correo electr\u00f3nico) no dancen a sus anchas por el sitio web.\n\n\n\n\n\nEl aspecto que tendr\u00eda una directiva para todos los robots podr\u00eda ser esta:\n\n\n\n\n<pre>User-agent: *\nDisallow: \/<\/pre>\n\n\n\n\ncon ella se le est\u00e1 diciendo a todos los robots de b\u00fasqueda que no deseamos que se\nindexe ning\u00fan contenido del sitio web.\n\nLas directivas (Disallow, Allow y User-agent) se pueden escribir tanto en may\u00fascula como en min\u00fascula. Sin embargo, el valor que se indique a continuaci\u00f3n s\u00ed deben respetar la forma en la que se ha escrito en el servidor, ya que no es lo mismo el directorio <em>usuario <\/em>que <em>Usuario<\/em>.\n\n&nbsp;\n\n\n\n\n\n\n\n\n<h3><strong>Directiva User-agent<\/strong><\/h3>\n\n\n\n\nSirve para indicar la ara\u00f1a a la que se quiere dar la orden. Aunque la mayor\u00eda de ara\u00f1as tienen una denominaci\u00f3n larga, por ejemplo la denominaci\u00f3n de la ara\u00f1a de Bing es <em>Mozilla\/5.0 (compatible; bingbot\/2.0; +<a href=\"http:\/\/www.bing.com\/bingbot.htm\">http:\/\/www.bing.com\/bingbot.htm<\/a>)<\/em>, la directiva User-agent la reconocer\u00e1 como <em>User-agent: Bingbot<\/em>.\n\n\n\n\n\nLos servicios de b\u00fasqueda de informaci\u00f3n en la web suelen tener varios tipos de ara\u00f1a, cada uno especializado en un tipo de informaci\u00f3n. Por ejemplo, <a href=\"https:\/\/www.bing.com\/webmaster\/help\/which-crawlers-does-bing-use-8c184ec0\" target=\"_blank\" rel=\"noreferrer noopener\">Bing<\/a>\u00a0 cuenta con Bingbot, MSNBot, MSNBot-Media, AdldxBot y BingPreview; <a href=\"https:\/\/varvy.com\/googlebot.html\" target=\"_blank\" rel=\"noreferrer noopener\">Google<\/a> tiene a Googlebot, Googlebot-Image, Goolgebot-Video&#8230;\n\n\n\n\n\nLos 10 bots m\u00e1s importantes, seg\u00fan <a href=\"https:\/\/www.incapsula.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Imperva Incapsula<\/a> son:\n\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-637\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/10\/aa.png\" alt=\"\" width=\"894\" height=\"337\" \/>\n\n&nbsp;\n\n\n\n\n<h3>Directiva Disallow<\/h3>\n\n\n\n\nEsta orden, que se puede repetir tantas veces como se desee (para varios ficheros o\u00a0 directorios), especifica qu\u00e9 partes del sitio web no deseamos que sean le\u00edas por la ara\u00f1a. Una peculiaridad de esta directiva es que si no se pone nada a continuaci\u00f3n, en realidad est\u00e1s permitiendo que se lea todo el contenido. As\u00ed, la orden\n<pre>User-agent: *\nDisallow:\/<\/pre>\n\n\n\n\nImpide que cualquier ara\u00f1a lea el contenido del sitio web completo. Pero\n\n\n\n\n<pre>User-agent: *\nDisallow:<\/pre>\n\n\n\n\nPermite que se pueda leer todo el contenido.\n\n\n\n\n\nLa orden\n\n\n\n\n<pre>User-agent: googlebot\nDisallow: \/usuario<\/pre>\n\n\n\n\nimplica que no se permite a la ara\u00f1a de Goolge leer el contenido que cuelga del directorio usuario.\n\n&nbsp;\n\n\n\n\n<h3>Directiva Allow<\/h3>\n\n\n\n\nSirve para indicar que queremos que se lea un fichero o carpeta en concreta. Realmente puede llegar a no tener mucho sentido, ya que robots.txt es inclusivo. Es decir, que si no se especifica claramente que no quieres que se haga una cosa, por defecto, har\u00e1 algo. Es decir, que todo lo que no sea Disallow ser\u00e1 Allow. Sin embargo, si queremos dejar claro que necesitamos que se lea un documento en concreto, la orden ser\u00e1:\n\n\n\n\n<pre>Allow: \/index.php<\/pre>\n\n\n\n<h2><\/h2>\n<h3>Directiva crawl-delay<\/h3>\n\n\n\n\nSe emplea para indicarle al robot de indexaci\u00f3n el tiempo que debe transcurrir desde que llega al sitio web hasta que comienza con el proceso de rastreo. Se suele emplear para ahorrar ancho de banda en determinados momentos. La orden\n\n\n\n\n<pre>Usert-agent: googlebot\ncrawl-delay: 15<\/pre>\n\n\n\n\nindica que el robot de Google debe esperar 15 segundos antes de comenzar a realizar su rastreo. No conviene emplear este m\u00e9todo si no se tiene muy claro el motivo. Ralentizar el tiempo que est\u00e1 el robots de b\u00fasqueda en nuestro sitio afecta directamente al crawl budget, es decir, el tiempo que tiene destinado un robot concreto para indexar nuestro sitio. Cuando llega ese tiempo el robot se ir\u00e1, aunque no haya indexado todo el contenido.\n\n&nbsp;\n\n\n\n\n<h3>Directiva sitemap<\/h3>\n\n\n\n\nAunque no es una directiva que empleen todos los agentes, lo cierto es que los m\u00e1s importantes s\u00ed la emplean (Bing, Google y Yandex) y sirve para indicar d\u00f3nde se encuentra el fichero sitemap.xml\n\n<a href=\"Caputra del \"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-638\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/10\/bb.png\" alt=\"\" width=\"440\" height=\"166\" \/><\/a>Esta captura del fichero robots.txt del peri\u00f3dico Ideal muestra la direcci\u00f3n donde se encuentran los ficheros sitemap.xml del servidor. Como se puede observar, es posible indicar varios ficheros, si es el caso.\n\n\n\n\n\n&nbsp;\n\n\n\n\n<h3>Uso de comodines<\/h3>\n\n\n\n\nAunque no existe una directriz clara en el documento que regula la forma en la que trabaja el Protocolo de Exclusi\u00f3n de Robots con respecto a las expresiones regulares o los comodines, lo cierto que es que la mayor\u00eda de robots de b\u00fasqueda entienden que el asterisco (*) sustituye a una cadena indeterminada de caracteres, y que el signo del d\u00f3lar ($) indica que se trata del final de una URL. De esta forma:\n\n\n\n\n<pre>Allow: \/*.php<\/pre>\n\n\n\n\nindica que permitimos que todos los documentos que tengan cualquier cadena de caracteres y, a continuaci\u00f3n .php, se pueden indexar. Pero, si observamos por ejemplo que contamos con ficheros con la finalizaci\u00f3n <em>.php?=temp<\/em> tambi\u00e9n ser\u00edan indexados.\n\nPara evitar eso, y asegurarnos de que realmente s\u00f3lo queremos los que terminan en .php deber\u00edamos escribir la directiva de esta forma:\n\n\n\n\n<pre>Allow: \/*.php$<\/pre>\n\n\n\n\n&nbsp;\n\n<strong>Ojo a los siguientes fallos<\/strong>\n\n\n\n\n\nSuele ser muy com\u00fan que se comentan una serie de errores que tendr\u00e1n su repercusi\u00f3n directa en la forma en la que se posiciona nuestro sitio web. Los errores m\u00e1s comunes que he detectado cuando mis alumnos generan estos ficheros son:\n\n\n\n\n<ul class=\"wp-block-list\" style=\"list-style-type: disc\">\n \t<li>Emplear el robots.txt que genera autom\u00e1ticamente el CMS sin preocuparse de si hace menci\u00f3n a directorios importantes o que, por el desarrollo natural del sitio web, ha ido apareciendo o desapareciendo.<\/li>\n \t<li>No codificar el fichero en UTF-8. Si no se emplea este sistema de codificaci\u00f3n de caracteres es posible que algunos robots tengan problemas para leer el fichero.<\/li>\n \t<li>Hacer ficheros demasiado grandes. Eso conlleva mucho tiempo de lectura, lo que reduce el tiempo que dedica el robots para hacer realmente lo importante: leer nuestro sitio web e indexarlo correctamente.<\/li>\n \t<li>Con la orden Disallow solo indicamos que no queremos que se lea una p\u00e1gina, pero s\u00ed puede aparecer la URL de esa p\u00e1gina en la lista de resultados de los buscadores, por el hecho de estar referenciada en otra p\u00e1gina que s\u00ed se haya indexado. Para evitar que la p\u00e1gina aparezca en los resultados de b\u00fasqueda lo ideal es emplear <em>&lt;meta name=\u00bbrobots\u00bb content=\u00bbnoindex\u00bb\/&gt;<\/em><\/li>\n \t<li>Google suele a\u00f1adir un slash (\/) al comienzo de las URLs. Esto significa que la orden <em>Disallow: -user<\/em> ser\u00e1 le\u00edda por Google com <em>Disallow: \/-user<\/em>, pudiendo referirse a otra cosa diferente de lo que deseamos. Lo mismo suceder\u00eda con la orden Disallow: *.pdf<\/li>\n \t<li>No es recomendable bloquear la lectura de archivos de hojas de estilo (CSS) ni de JavaScript (JS), ya que los robots s\u00ed son capaces de leer e interpretar esas etiquetas.<\/li>\n \t<li>Siempre es recomendable comprobar la integridad del fichero robots.txt creado. Para ello existen varias herramientas gratuitas online. Entre ellas, siempre suelo recomendar la de <a href=\"https:\/\/support.google.com\/webmasters\/answer\/6062598?hl=en&amp;ref_topic=6061961\" target=\"_blank\" rel=\"noopener\">Google<\/a>.<\/li>\n<\/ul>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Con esta entrada finalizo la \u201ctrilog\u00eda\u201d que dedico a los ficheros que considero como imprescindibles en cualquier servidor Web. El fichero robots.txt es, junto a sitemap.xml y .htaccess, un elemento fundamental que aporta muchas ventajas desde el punto de vista del posicionamiento, la seguridad y el mantenimiento de cualquier sitio web. Pero antes de hablar [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":632,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[11],"tags":[81,42],"class_list":{"0":"post-359","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-posicionamiento-seo","8":"tag-robots-txt","9":"tag-servidores-web","10":"entry"},"_links":{"self":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/comments?post=359"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/359\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media\/632"}],"wp:attachment":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media?parent=359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/categories?post=359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/tags?post=359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}