Continúo con la trilogía sobre los ficheros clave en cualquier servidor web. Si en anteriores entradas hablaba de .htaccess, ahora me centraré en sitemap.xml.

Antes de nada, creo que es necesario establecer una distinción terminológica. La mayoría de mis alumnos suele confundir sitemap.xml con el mapa del sitio. Es una confusión bastante razonable. Ambos significan lo mismo y sirven, más o menos, para lo mismo: mostrar la estructura del sitio web. Sin embargo existen diferencias evidentes.

Un mapa del sitio es un mecanismo de navegación de los que Rosenfeld, Morville y Arango denominan complementarios. Es decir, de los que sirven para un propósito concreto y están integrados dentro del sistema de navegación principal del sitio web. De ahí se puede deducir que poseen una serie de características propias, que los diferencian de los “otros” mapas del sitio:

  • Se trata de un elemento visible para el usuario, quien podrá acceder a él por medio de algún enlace determinado que se puede mostrar dentro de cualquier sección del sitio web. Es decir, que está vinculado desde el mecanismo de navegación del sitio. Por ejemplo, en la primera imagen se puede observar el acceso al mapa web del Ministerio de Sanidad, Servicios Sociales e Igualdad[i], y en la segunda el resultado de dicho enlace:

 

 

 

 

  • Es un documento en formato HTML (aunque también los hay como formatos gráficos, algo poco recomendable por evidentes cuestiones de indización) que tiene el mismo aspecto y respeta las convenciones tipográficas, de color, de estilo… del sitio web donde se encuentra enmarcado.
  • Que es indizable por los buscadores, por lo que habrá que considerarlo como un elemento clave en el posicionamiento del sitio.
  • No suelen tener un tamaño determinado. Generalmente vendrá condicionado por la estructura de la organización del contenido del sitio web y, en función de la cantidad de secciones, subsecciones, enlaces… que tenga el sitio, el mapa será más o menos grande. Al igual que el resto de páginas de cualquier web, se debe considerar la posibilidad de no obligar a los usuarios a tener que hacer demasiado scroll, por lo que lo recomendable es que no tenga un tamaño excesivo. Por otra parte, si la información que muestran está poco estructurada, tampoco serán de utilidad. Existen determinadas convenciones como, por ejemplo, usar las tabulaciones para indicar diferentes niveles de especificidad o los distintos submenús; agrupar las opciones empleando alguna metáfora (como formas cuadradas o rectangulares…).

  • Y, por último, no es “obligatorio”. No todos los sitios web son susceptibles de necesitar un mapa del sitio. Tan solo deberían contar con este mecanismo aquellos sitios que, por tener una estructura muy compleja o grande, sientan que debe ofrecer a sus usuarios otra forma de acceder a la información. Hay que tener en cuenta que no todo el mundo colocaría las secciones y subsecciones en el mismo sitio, ya que no todo el mundo posee la misma organización conceptual. Un mapa del sitio ofrece una visión global del sitio web de un simple vistazo, lo que facilita la ubicación del elemento que se está buscando, en ocasiones, de manera más sencilla que cualquier método de consulta. Por otro lado, favorece la serendipidad, algo muy favorable en la navegación que se realiza sobre sitios que se consultan por primera vez.

 

Sitemap.xml es un fichero en formato XML que se suele encontrar en el directorio raíz de cualquier servidor. Y digo suele porque no es obligatorio que esté allí, ya que puede cumplir su función perfectamente desde cualquier otro sitio del servidor, aunque sí es muy recomendable. El hecho de que esté realizado en un formato como XML nos puede indicar otra característica: no está pensado para que lo visualicen las personas, sino que serán los motores de búsqueda los que hagan uso de él.

El objetivo que cumple este fichero es el de informar a los motores de búsqueda de la ruta que se debe seguir para obtener todos los documentos que hay en un sitio web. De esa manera, el rastreador que indexe ese contenido tendrá un control mayor sobre qué documentos ha procesado y cuáles no. Por lo tanto, lo que incluye es un listado de las URLs de las páginas que conforman el sitio web, junto a información adicional.

En condiciones normales, si las páginas del sitio web están bien enlazadas, se cuenta con un mecanismo de navegación bien estructurado y la información está bien organizada, no debería ser necesario contar con este fichero. Sin embargo, está demostrado que el fichero sitemap.xml ayuda al rastreador a hacer su trabajo de manera más precisa, lo que repercute en un mejor tratamiento del sitio web por parte del buscador, así como un buen posicionamiento.

Evidentemente, si el sitio es muy grande (en cuanto a número de páginas), lo ideal es contar con esta herramienta. En este tipo de sitios también suele ser común que existan páginas que tengan contenido pero que, por cualquier motivo, se han quedado aisladas del resto, al no contar con un enlace que las conecte con las demás, o estar este mal hecho.

 

El protocolo sitemap

La idea de contar con una herramienta que facilitase el trabajo de los webcrawlers fue desarrollada por Google en junio de 2005, a partir de las teorías plasmadas en un artículo publicado la revista del grupo Sigmetrics en 2000. Un año más tarde se publicó la versión 0.90 del protocolo sitemap.xml que especificaba la sintaxis que debían tener tales ficheros. En la actualidad es un estándar de facto y es empleado por la mayoría de servicios de búsqueda de la Web. Las características de este protocolo especifican, entre otras cosas, lo siguiente:

  • El hecho de contar con este fichero no garantiza que los buscadores indexen todas las páginas que aparezcan en él, pero facilita el trabajo de los rastreadores y, por lo tanto, la posibilidad de que todo el sitio web esté indizado es mayor.
  • Las direcciones que conforman ese fichero deben pertenecer al mismo dominio y al mismo protocolo. Esto significa que no se pueden incluir subdominios (desde el punto de vista SEO un subdominio es un sitio web distinto, por lo que no tendría ningún sentido listar las direcciones de otro dominio en el que estoy publicando).El hecho de que cada sitemap.xml se asocie a un protocolo determinado obliga a que si un mismo sitio web trabaja con http y con https, sea obligatorio que cuente con dos sitemap.xml diferentes.
  • El tamaño máximo del fichero será de 10 megas, con un número máximo de URLs de 50.000. En el caso de que fuese necesario, es posible usar más de un fichero sitemap.xml, pero siempre teniendo en cuenta que esos ficheros deben estar almacenados en el mismo sitio. Si se ha decidido crear un directorio para almacenar esta información, todos los ficheros sitemap.xml deberán almacenarse ahí. Y se ha decidido crear más de un fichero sitemap.xml será obligatorio crear un fichero índice que especifique cómo se llaman y dónde se encuentran los demás como, por ejemplo, sucede en este sitio.
  • Es posible comprimir, en formato GZIP, el fichero. Reduciendo así su tamaño y haciéndolo más manejable.
  • El fichero sitemap.xml se tiene que codificar en UTF-8. Si fuese necesario emplear valores para los datos, se deben emplear los códigos de escape para los caracteres especiales del HTML.
  • Las etiquetas básicas son:
    • <urlset></urlset> para el elemento raíz del fichero xml
    • <url></url> para cada entrada
    • <loc></loc> para introducir la url completa de la página referenciada. Debe especificar el protocolo (http o https). Tiene un tamaño máximo de 2048 caracteres.
  • Las etiquetas opcionales, que se introducen después de cada <loc> son:
    • <lastmod></lastmod> con la fecha de la última modificación de esa página, en formato AAAA-MM-DD
    • <changefrec></changefrec> que indica la frecuencia de cambios que sufre una página determinada. Es un elemento muy importante, ya que indica al rastreador la frecuencia con la que debería volver para indizar esa página de nuevo, ya que su contenido ha cambiado desde la última vez que lo procesó. Los valores van desde always (siempre) a rangos periódicos como weeky, monthly, yearly o never.
    • <priority></priority> indica la importancia que tiene una página con respecto al resto del sitio web. Sirve para indicar el peso relativo de una página concreta dentro del sitio. Puede tener valores entre 0 y 1. Lo habitual es que la página principal sea 1 y, a partir de ahí, se van estableciendo diferentes escalas de valor, teniendo en cuenta que 0.5 es el valor por defecto. Un error muy común es poner la misma prioridad a todas las páginas. Si se hace eso se puede conseguir el efecto contrario: que todas las se consideren igual de importantes y, por lo tanto, desaparece el posible efecto que tenga la ponderación que se hace de las páginas.

Teniendo en cuenta todo esto, un posible ejemplo de fichero sitemap.xml podría ser:

<?xml version="1.0" encoding="UTF-8"?>
       <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
               <url>
                      <loc>http://www.ejemplo.es/</loc>
                      <lastmod>2017-03-15</lastmod>
                      <changefrec>weekly</changefrec>
                      <priority>1</priority>
               </url>
               <url>
                      <loc>http://www.ejemplo.es/saludo.html</loc>
                      <lastmod>2017-03-15</lastmod>
                      <changefrec>yearly</changefrec>
                      <priority>0.5</priority>
               </url>
</urlset>

Que es el de un sitio web ubicado en http://www.ejemplo.es y que cuenta con dos páginas; la primera de ellas, con una prioridad de 1, modificada el 15 de marzo y una frecuencia de actualización semanal; y la segunda realizada el mismo día, con una actualización anual y con un peso de 0.5.

 

Creación del fichero

Al contrario de lo que pudiera desprenderse de lo escrito hasta ahora, la creación de este fichero no es especialmente complicada aunque, eso sí, hay que ser muy minucioso si se pretende hacer de forma manual. Lo cierto es que en la mayoría de sitios web la creación (y alimentación diaria) de este fichero se realiza de forma automática.

Para ello se suelen emplear dos procedimientos:

  • Uso de plantillas. Hay multitud de aplicaciones en la web que, de forma gratuita, generan el fichero sitemap.xml de cualquier sitio web. Eso sí, unos los hace de forma más concienzuda (con más etiquetas optativas) y otros de manera más simple. En cualquier caso, emplear este método tiene un problema: y es que obligan a tener que genera el fichero sitemap.xml de nuevo cada vez que se introduce nuevo contenido en el sitio web o se actualiza el ya existente. Dentro de esta modalidad podemos encontrar xml sitemap generator, XML-Sitemaps.com, Xml Sitemap Generator (con versión tanto online como cliente), Online XML Sitemap Generator o Sitemap Generator de Small Seo Tools.
  • Si se está trabajando con un CMS lo habitual es contar con un módulo/plugin que se encargue tanto de la creación como de la constante actualización del sitemap.xml conforme se va creando/modificando contenido en el sitio. Los hay para WordPress, Drupal, Joomla, etc.

 

Tipos de fichero

Dado que el contenido de un sitio web puede no sólo ser textual, es lógico que el fichero sitemap.xml incluya también información sobre las diversas variantes en las que planteamos trasladar nuestra información. Así, nos podemos encontrar con:

  • Sitemaps de imagen. De esta manera es más sencillo informar al motor de búsqueda de cómo queremos que indexe las imágenes del sitio web, pudiendo especificar títulos, localización geográfica de las fotos, licencia de uso etc. Para una mejor configuración de estas opciones, lo ideal es revisar las recomendaciones que sobre esto hace Google. Por cierto, que resulta muy curioso observar cómo Google propone el uso de etiquetas (<image>, <image:loc>, <image:caption>, <image:license>…) que no están aprobadas por el protocolo que ellos auspiciaron.
  • Sitemaps de vídeos. Proporciona información sobre la localización de un video del sitio, indicando el título, un resumen, la plataforma en la que se encuentra disponible (youtube, vimeo…) y la duración. En este vídeo, Google Webmaster te explica muy bien cómo trabajar con las etiquetas específicas.
  • Sitemaps de noticias. Para configurar cada artículo por género, título, autor… Aquí explican cómo configurarlo.

Por otra parte, hay que mencionar que este tipo de ficheros se pueden realizar con múltiples formatos. En la entrada de MicroSys analizan, de forma sencilla y clara, cómo se construye un sitemap con HTML, txt, ROR o RSS.

 

Enviar el sitemap al buscador

Una vez que está creado el fichero, y almacenado en el lugar correspondiente del servidor, lo ideal es validar que es correcto. Para ello se pueden emplear un cualquiera de las herramientas recomendadas por el Consorcio: W3c Schema Tools. Aunque, si hemos optado por la generación automática del fichero, no suele hacer falta, ya que suelen crearse de manera sólida (por no hablar de que la mayoría de aplicaciones que crean sitemap.xml también tienen un parser incluido que lo valida antes de su publicación).

Lo siguiente es decirle al buscador que nuestro sitio web tiene un fichero sitemap.xml y dónde está. Para ello se pueden emplear tres opciones:

  • Empleando cualquiera de las herramientas para webmaster que, de manera gratuita, ofrecen la mayoría de motores de búsqueda, como Google Webmaster o Bing Webmaster tools.
  • Introducir, al final del archivo robots.txt la orden: sitemap: http://www.ejemplo.es/sitemap.xml
  • Hacer un ping, es decir informar directamente al navegador dónde se encuentra ese fichero. Para eso, en función del buscador la URL varía:
    • http://www.google.com/webmasters/tools/ping?sitemap=http://www.ejemplo.es/sitemap.xml
    • http://www.bing.com/webmaster/ping.aspx?sitemap= http://www.ejemplo.es/sitemap.xml

 

——————————————————————-

[i] Buscando sitios institucionales para ejemplos de mapas de sitio me he dado cuenta de que la mayoría de webs de los Ministerios españoles ha dado un giro al diseño, y se sitúan a lo que se hacía hace 10 años. Son feos, muy poco agraciados desde el punto de vista del diseño, y con una organización de la información que brilla por su ausencia.