Sitemaps y robots

 

El uso del fichero sitemap.xml y robots.txt está muy extendido desde hace muchísimo tiempo en el mundo del posicionamiento web. El primero contiene las URLs del sitio web, facilitando así la labor de indexación para los buscadores, y el segundo representa el caso contrario, las carpetas, ficheros, etc..., que no queremos que sean rastreados ni indexados por los buscadores. A grosso modo, claro, porque luego hay muchas excepciones y casos a tener en cuenta.

Ambos fichero se colocan habitualmente en la raíz del sitio web al que hacen referencia, y en la medida en que actualizamos contenido deben ser actualizados periódicamente para que no pierdan su valor, sobre todo en el caso del sitemap; tanto es así que la mayoría de los gestores de contenidos utlizados para el desarrollo de sitios web tienen sus plugins para generar el sitemap, y normalmente crean el fichero robots por defecto con los directorios que no deben ser rastreados. Incluso existe la posibilidad de crear el fichero sitemap desde sitios online que rastrean nuestra web y generan el mapa por nosotros, como el conocido http://www.xml-sitemaps.com/

Una vez tenemos los ficheros listos, le decimos a Google que están preparados desde las Google Webmaster Tools, y ya tenemos una parte de nuestro SEO realizado con relativamente poco esfuerzo, y si no hay otras complicaciones veremos que Google indexa nuestras páginas con más rapidez, o al menos ese efecto es el que buscamos.

Hasta aquí todo correcto; el uso de estas herramientas es fácil e intuitivo y exigen poco trabajo por nuestra parte, tanto en la instalación como en el mantenimiento posterior, pero, como todo en la vida, las cosas no suelen ser tan sencillas y tienden a complicarse.

Un ejemplo clásico del uso de ambos ficheros

Imaginemos que tenemos nuestro dominio www.dominio.com. Aquí está nuestra web de empresa, con nuestros ficheros sitemap y robots.txt situados directamente en el directorio raíz. Nuestro fichero robots.txt puede ser algo así:

User-agent: *
Disallow: /wp-admin/ 
Disallow: /wp-includes/

Es decir, le decimos a los buscadores que no rastreen ni los directorios wp-admin ni wp-includes. Obviamente, en este caso tenemos una instalación de Wordpress.

Siguiendo con el ejemplo, aunque podríamos haber creado el sitemap con algún plugin como SEO Yoast, hemos optado por hacerlo de forma manual a través de un servicio online, con las siguientes líneas:

<?xml version="1.0" encoding="UTF-8"?>
<urlset 
     xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9                                                                       
         http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
<url>
<loc>http://www.dominio.com/</loc>
</url>
<url>
<loc>http://www.dominio.com/pagina1</loc>
</url>
<url>
<loc>http://www.dominio.com/pagina2</loc>
</url>
<url>
<loc>http://www.dominio.com/pagina3</loc>
</url>
<url>
<loc>http://www.dominio.com/pagina4</loc>
</url>
<url>
<loc>http://www.dominio.com/pagina5</loc>
</url>

El fichero puede contener otros parámetros, pero lo hemos reducido por simplicidad.

Así que, en resumen, nuestro sitio web tiene seis páginas, y los buscadores no indexarán el contenido bajo los directorios wp-admin y wp-includes.

De hecho, podemos acceder a ambos ficheros desde cualquier navegador:

http://www.dominio.com/sitemap.xml

http://www.dominio.com/robots.txt

Múltiples ficheros sitemap y robots

¿Qué ocurre si creamos un nuevo sitio web que va a albergar la tienda online y lo situamos en una subcarpeta?

O dicho de otra manera, creamos una tienda online con nuestro gestor favorito y la situamos en el directorio tienda, http://www.dominio.com/tienda

En la subcarpeta tenemos también el fichero robots.txt, con un contenido que podría ser similar a éste, muy típico de gestores como PrestaShop.

# Directories
Disallow: */classes/
Disallow: */config/
Disallow: */download/
Disallow: */mails/
Disallow: */modules/
Disallow: */translations/
Disallow: */tools/


Esta es una situación tan clásica como incorrecta. Las reglas en cuanto al fichero robots.txt son muy claras: sólo puede haber un fichero, y debe estar en la raíz del dominio principal. Es decir, un fichero robots como el que acabamos de ver, en una subcarpeta, será ignorado. Para resolver el problema y que ambos ficheros sea considerados, lo más efectivo en este caso será fusionar los dos en la raíz principal, de la siguiente forma: 

User-agent: *
Disallow: /wp-admin/ 
Disallow: /wp-includes/
# Directories
Disallow: /tienda/*/classes/
Disallow: /tienda/*/config/
Disallow: /tienda/*/download/
Disallow: /tienda/*/mails/
Disallow: /tienda/*/modules/
Disallow: /tienda/*/translations/
Disallow: /tienda/*/tools/

Como vemos, hemos añadido el directorio tienda en las rutas que estaban en el fichero de la subcarpeta para asegurarnos de que no se rastrean esos directorios, y con esto el fichero estaría ya terminado y, ahora sí, cumpliendo con su función.

Por otra parte, podremos tener también en la subcarpeta de la tienda un fichero sitemap.xml similar al que hemos visto anteriormente. En principio, los crawlers pueden leer ficheros sitemap en diferentes subcarpetas, y todos ellos serían interpretados, por lo que la opción no es incorrecta. Eso sí, las URL referenciadas dentro de cada sitemap deben ser de ese misma carpeta o inferiores, nunca de carpetas padre.

Aunque esta alternativa puede ser válida desde un punto de vista técnico, no es muy elegante. Tenemos múltiples sitemap repartidos por la web, con el consiguiente riesgo de fallo, y además, no podremos enviar todas a Google Webmaster Tools, puesto que la herramienta sólo admite un sitemap por dominio.

Sitemap múltiple

El fichero de índices sitemap

Para solventar esa problemática, existe una solución mucho más elegante que consiste en la creación de un índice central que haga referencia a todo el resto de sitemaps que tenemos en el sitio web. Dicho fichero se llama sitemap_index.xml, y presenta el siguiente formato: 

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
 <sitemap>
    <loc>http://www.dominio.com/sitemap.xml</loc>
    <lastmod>2014-08-01T18:23:17+00:00</lastmod>
 </sitemap>
 <sitemap>
    <loc>http://www.dominio.com/tienda/sitemap.xml</loc>
    <lastmod>2014-08-01</lastmod>
 </sitemap>
</sitemapindex>

Hemos añadido en el fichero el enlace a los dos sitemap que tenemos en el sitio web. El del sitio principal, y el de la tienda. De esta forma todo el mapa está enlazado a través de un único fichero que podemos enviar a Google Webmaster Tools. 

Conclusiones

Aunque en apariencia sitemap.xml y robots.txt no dan mucho juego, realmente tienen la suficiente potencia para amoldarse a gran cantidad de situaciones. En este ejemplo hemos presentado el caso más clásico de sitio web integrado en una subcarpeta de otro sitio web principal, pero el juego puede seguir hasta el infinito, y más allá.