jueves, 5 de mayo de 2011

¿De verdad sabes hacer que una página no aparezca en Google?

[... usando el protocolo de exclusión de robots]

En el breve espacio de unos días me he visto envuelto en varias conversaciones sobre cómo hacer que una página publicada en internet no aparezca en el buscador de Google y he podido comprobar que existe bastante confusión sobre cómo se usa el protocolo de exclusión de robots.

A la pregunta ¿Tu cómo haces para que una página publicada en internet no aparezca en Google? me han contestado unas veces: "Pones un disallow para esa url en el fichero robots.txt" y otras: "Pones un disallow para esa url en el fichero robots.txt y añades una meta etiqueta NOINDEX en el html de la página". Bien, pues las dos respuestas son incorrectas.

¿Por qué un disallow de una página en el fichero robots.txt no es suficiente para evitar que aparezca en los resultados de Google?
El disallow le indica al robot de Google que no debe descargarse una página. Pero eso no significa que Google no pueda inferir que el contenido de esa página, sea el que sea, es relevante para una búsqueda determinada y por tanto ofrecer la url como uno de los resultados de búsqueda.

Intento ilustrarlo con un ejemplo. Imaginemos que tengo una página en la que desvelo el secreto de la eterna juventud. Como a mucha gente le interesa el tema resulta que un millón de páginas deciden enlazar a mi página con el texto "el secreto de la eterna juventud".

En este escenario decido que no quiero que nadie pueda encontrar el secreto de la eterna juventud buscando en Google y para ello añado una línea disallow en el robots.txt de mi portal.

El disallow impide que el robot de Google visite mi página y por tanto impide que Google conozca que en ella se desvela el secreto de la eterna juventud. Pero el robot de Google también visita el millón de páginas que tienen un link a mi página y en los índices de Google queda registrado que en un millón de páginas cuando se refieren al secreto de la eterna juventud ofrecen a sus usuarios el visitar mi página.

En esta situación ¿qué resultados ofrecerá el buscador de Google a un usuario que busque "el secreto de la eterna juventud"?. Pues muy probablemente uno de los resultados será mi página. Google no conoce el contenido de mi página, pero ha llegado a la conclusión de que mi página es un resultado relevante para esa búsqueda y se lo ofrece al usuario. Eso si, como no conoce el contenido de la página el resultado no tendrá snippet.

Este es sólo un ejemplo de cómo una página que no ha sido visitada por el robot de Google puede aparecer en los resultados de una búsqueda. Una explicación más detallada y con más ejemplos puedes encontrarla en este video (en inglés): Uncrawled URLs in search results

¿Por qué un disallow de una página en el fichero robots.txt más añadir una metatag NOINDEX no es suficiente para evitar que aparezca en los resultados de Google?
En este caso la respuesta es muy sencilla. Si tengo un disallow estoy impidiendo que el robot de Google vea el contenido de la página por lo que no podrá ver la meta NOINDEX y por tanto estaremos en la situación anterior. Google no conocerá el contenido de la página pero todavía es posible que la muestre como resultado en algunas búsquedas.

Entonces, ¿Cómo haces para que una página publicada en internet no aparezca en los resultados de Google?
Pues la respuesta también es muy sencilla. Asegúrate de que tu fichero robots.txt permite al robot de Google acceder a la página e incluye el meta NOINDEX en ella.

Si, ya se que es contra-intuitivo, pero es la forma correcta de hacerlo. Lo que pasará es que el robot de Google descargará la página, verá que en su cabecera figura un NOINDEX y entonces tomará nota de que esa página no debe indexarse y por tanto no aparecerá en los resultados de búsqueda.

Todo esto está explicado en castellano esta página de ayuda: Bloquear o eliminar páginas mediante un archivo robots.txt

Pregunta de bonus points. ¿Cómo haces para que un fichero pdf (una página flash, un vídeo o un fichero de audio) publicado en internet no aparezca en los resultados de Google?
La respuesta es también sencilla. Añade la directiva X-Robots-Tag en las cabeceras http usadas para servir el fichero. Esta directiva soporta todas las etiquetas META por lo que la directiva quedaria X-Robots-Tag: noindex

Más información en el artículo (en inglés): Robots Exclusion Protocol: now with even more flexibility

¿Es esto así para todos los buscadores?
No para todos. Es importante recordar que el protocolo de exclusión de robots es de adopción voluntaria por los buscadores y existen muchos robots que no lo respetan. Incluso, entre los que lo respetan existen distintos criterios sobre cómo debe comportarse un robot/buscador frente a una etiqueta.

Bing, el buscador de Microsoft, soporta todas las etiquetas mencionadas en este artículo y su comportamiento es idéntico al que he explicado, incluida la directiva X-Robots-Tag. De hecho, en la página Prevent a bot from getting “lost in space” (SEM 101) se puede encontrar el siguiente texto (las negritas son mías):

"Search engines read the robots.txt file repeatedly to learn about the latest disallow rules. For URLs disallowed in robots.txt, search engines do not attempt to download them. Without the ability to fetch URLs and their content associated, no content is captured and no links are followed. However, search engines are still aware of the links and they may display link-only information with search results caption text generated from anchor text or ODP information. 
However, web pages not blocked by robots.txt but blocked instead by REP directives in tags or by the HTTP Header X-Robots-Tag is fetched so that the bot can see the blocking REP directive, at which point nothing is indexed and no links are followed."

El caso de Yahoo! sin embargo es ligeramente diferente. Yahoo! soporta todas las etiquetas y directivas que se mencionan en este artículo, incluida la directiva X-Robots-Tag; pero en su página How to Prevent Search Engines from Indexing Specific Pages nos encontramos el siguiente texto:
"Although the document content is not indexed, the URL might remain in the search engine database as a reference link from other public web pages."
Artículos relacionados donde conseguir información adicional:

Update 8/Sept/2011



A cuidarse
Javier Arias González