Ejemplos HTML y XHTML

Sitemap: qué es, para qué sirve y cómo se construye

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando...

Este documento describe el esquema XML para el protocolo Sitemap.

¿Qué es y para qué sirve un sitemap?

Decir que básicamente es un archivo que contiene una lista con las url’s de tu web, así como su frecuencia de actualización (diaria, semanal, mensual…), su importancia en relación con el resto de la web, etc.

Este archivo le dice a los robots de los buscadores qué páginas deben rastrear. Obviamente, el sitemap para los buscadores es sólo una sugerencia, porque nadie te garantiza que por enviarles un sitemap te vayan a indexar todas las páginas que haya en él, pero desde luego es una herramienta a nuestro favor en el posicionamiento, puesto que facilita el trabajo a los buscadores a la hora de encontrar páginas en tu web.

Herramienta online para generar sitemaps

Xml sitemaps es una herramienta online para generar tus sitemaps de google de forma automática. Es muy útil si tienes una web estática no basada en bases de datos, porque en estos casos o haces a mano la tarea de incluir una a una las webs que quieres listar en tu sitemap, o sales del paso con herramientas como esta.

Pues bien, xml sitemaps rastrea las páginas de tu página web y te crea un archivo sitemap en formatos (.xml, .hml, .txt) listo para descargar. Una vez lo descargas sólo tienes que enviarlo a Google. Es importante decir que este programa tiene una versión gratuita y otra de pago, en la gratuita se limitan el número de url’s rastreadas a 500 y si detecta enlaces rotos no te permite saber cuáles son, para eso tienes que pagar 5$.

¿Cómo es el protocolo sitemap?

El protocolo Sitemap está formado por etiquetas XML. Todos los valores en un Sitemap deben de tener sustiución de entidades (NT. ‘entity-escaped‘ en inglés). El archivo en sí debe estar codificado bajo UTF-8.El Sitemap debe:

  • Comenzar con una apertura de la etiqueta <urlset> y acabar con una etiqueta de cierre </urlset>.
  • Especificar el atributo namespace [xmlns] (estándar del procotolo) dentro de la etiqueta <urlset>
  • Incluir una entrada de la etiqueta <url> para cada URL como etiqueta padre.
  • Incluir una etiqueta hijo <loc> para cada etiqueta padre <url>.

El resto de etiquetas son opcionales. El soporte de estas etiquetas opcionales podría variar en cada motor de búsqueda. Dirígete a la documentación de cada motor de búsqueda para más detalles.

Ejemplo de XML de Sitemap

El siguiente ejemplo muestra un Sitemap que contiene sólo una URL y utiliza todas las etiquetas opcionales. Las etiquetas opcionales están en cursiva.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.ejemplo.com/ </loc>
 <lastmod>2005-01-01 </lastmod>
<changefreq>monthly </changefreq>
<priority>0.8 </priority>
</url>
</urlset>

Definición de las etiquetas XML

Las etiquetas XML disponibles están descritas a continuación.

Atributo Descripción
<urlset> necesaria Contiene y cierra el archivo y las referencias al protocolo estándar actual.
<url> necesaria Etiqueta padre para cada entrada de URL. El resto de etiquetas son hijas de esta etiqueta..
<loc> necesaria URL del documento. Esta URL debe comenzar con el protocolo (por ejemplo http) y terminar con una barra, si tu servidor web lo precisa. Debe contener menos de 2.048 caracteres.
<lastmod> opcional La fecha de la última modificación de este documento. Esta fecha debe estar en el formato Datetime de W3C. Este formato te permite omitir la parte de la hora si quieres y usar YYYY-MM-DD.Fíjate que esta etiqueta es distinta de la cabecera If-Modified-Since (304) que un servidor puede devolver, y los motores de búsqueda pueden usar ambas fuentes distíntamente.
<changefreq> opcional La frecuencia con la que se espera que el documento sea modificado. Este valor ofrece información general a los motores de búsqueda y puede que no se correlacione exactamente en la frecuencia en la que analicen el documento. Los valores válidos son (NT: traducción entre paréntesis):

  • always (siempre)
  • hourly (cada hora)
  • daily (diariamente)
  • weekly (semanalmente)
  • monthly (mensualmente)
  • yearly (anualmente)
  • never (nunca)

El valor “always” debe ser usado para describir documentos que cambien cada vez que son cargados. El valor “never” debe ser usado para describir URLs archivadas.

Por favor, fíjate que el valor de esta etiqueta es considerado un consejo y no una orden directa. Incluso aunque las arañas de los motores de búsqueda consideren esta información para tomar decisiones, podrían analizar los documentos marcados como “hourly” menos frecuentemente que eso mismo, y pueden analizar documentos marcados como “yearly” con más frecuencia que esa. Las arañas pueden periódicamente analizar documentos marcados como “never” para que puedan analizar cambios no esperados para esos documentos.

<priority> opcional La prioridad de esta URL relativa al resto de URLs en tu sitio. Los valores válidos van desde 0.0 hasta 1.0. Este valor no afecta a como tus documentos son comparados a documentos en otros sitios. Sólo hace saber a los motores de búsqeuda qué documentos estimas que son más importante para las arañas.La prioridad por defecto de un documento es 0.5.Por favor, date cuenta que la prioridad que asignes a un documento no influye en la posición de tus URLs en las páginas de resultados de un motor de búsqueda. Los motores de búsqueda pueden usar esta información cuando estén seleccionando entre URLs del mismo sitio, así que puedes utilizar esta etiqueta para incrementar la probabilidad de que tus documentos más importantes aparezcan en el índice de búsqueda.También fíjate que asignar una alta prioridad a todas las URLs en tu sitio no te va a ayudar. Debido a que esta prioridad es relativa, sólo es utilizada para seleccionar URLs en tu sitio.

Sustitución de entidades

Tu archivo Sitemap debe estar codificado en UTF-8 (normalmente puedes hacerlo cuando guardas el archivo). Como con los archivos XML, cualquier dato (incluyendo URLs) debe usar sustitución de entidades para los caracteres listados en la siguiente tabla.

Carácter Código de sustitución
Ampersand & &
Comilla simple
Comilla doble
Mayor que > >
Menor que < <

Además, todas las URLs (incluyendo la URL de tu Sitemap) deben ir correctamente adecuadas como URL y codificadas para poder ser leídas por el srevidor donde están situadas. Sin embargo, si estás usando algún tipo de script, herramienta o registro para generar tus URLs (cualquier cosa que no sea escribirlas a mano), es normalmente bastante fácil. Por favor comprueba para estar seguro que tus URLs siguen el estándar RCF-3986 para URIs, el RFC-3987 para IRIs, y el estándar XML.

A continuación, hay un ejemplo de una URL que utiliza un carácter no ASCII (NT: usa el umlaut, también llamado u con diéresis, cambiaré el ejemplo para usar la letra ‘ñ‘) además de un carácter que requiere ser sutituido (&):

http://www.ejemplo.com/españa.html&q=nombre

Lo siguiente es la misma URL, codificada en ISO-8859-1 (para alojar en un servidor que use esa codificación) y con la URL adaptada:

http://www.ejemplo.com/espa%F1a.html&q=nombre

Luego está la misma URL, codificada bajo UTF-8 (para alojar en un servidor que use esa codificación) y con la URL adaptada:

http://www.ejemplo.com/espa%C3%B1a.html&q=nombre

Y a continuación la misma URL, pero además con sustitución de entidades:

http://www.ejemplo.com/espa%C3%B1a.html&q=nombre

Ejemplo de Sitemap en XML

El código siguiente muestra un Sitemap en formato XML. El Sitemap en el ejemplo contiene un pequeño número de URLs, cada cual usa diferentes parámetros opcionales (NT: he ‘castellanizado’ las URLs).

<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sobjetoaps.org/schemas/sobjetoap/0.9">
<url>
<loc>http://www.ejemplo.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.ejemplo.com/catalogo?objeto=12&desc=madrid</loc>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>http://www.ejemplo.com/catalogo?objeto=73&desc=bcn</loc>
<lastmod>2004-12-23</lastmod>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>http://www.ejemplo.com/catalogo?objeto=74&desc=londres</loc>
<lastmod>2004-12-23T18:00:15+00:00</lastmod>
<priority>0.3</priority>
</url>
<url>
<loc>http://www.ejemplo.com/catalogo?objeto=83&desc=usa</loc>
<lastmod>2004-11-23</lastmod>
</url>
</urlset>

Utilizando archivos índice de Sitemaps (para agrupar diferentes archivos Sitemap)

Puedes ofrecer múltiples archivos Sitemap, pero cada archivo Sitemap que ofrezcas debe tener menos de 50.000 URLs y debe ser menor de 10MB (10.485.760 bytes). Si quieres, puedes comprimir tus archivos Sitemap usando gzip para permanecer por debajo de 10MB y rebajar tu consumo de ancho de banda. Si quieres listar más de 50.000 URLs, debes crear varios archivos Sitemap.

Si ofreces varios archivos Sitemap, deberias listar cada archivo Sitemap en un archivo índice Sitemap. Los índices Sitemap no pueden listar más de 1.000 Sitemaps y no deben ocupar más de 10MB (10.485.760 bytes). El formato XML de un índice Sitemap es muy parecido al formato XML de un archivo Sitemap.

El índice sitemap debe ofrecer:

  • Comenzar con una etiqueta de apertura <sitemapindex> y cerrar con una etiqueta </sitemapindex>.
  • Incluir una entrada <sitemap> para cada Sitemap como etiqueta padre.
  • Incluir una etiqueta hijo <loc> por cada etiqueta padre <sitemap>.

La etiqueta opcional <lastmod> también está disponible para archivos de índice de Sitemaps.

Nota: Un índice de Sitemaps sólo puede especificar Sitemaps que se encuentren en el mismo sitio que el propio índice. Por ejemplo,
http://www.tusitio.com/sitemap_index.xml puede incluir Sitemaps de http://www.tusitio.com pero no de http://www.ejemplo.com o de http://tualojamiento.tusitio.com. Como los archivos Sitemap, un índice de Sitemaps debe estar codificado en UTF-8.

Ejemplo de índice Sitemap en XML

El siguiente ejemplo muestra un índice Sitemap que lista dos Sitemaps:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex
xmlns="http://www.sitemaps.org/schemas/sitemapindex/0.9">
<sitemap>
<loc>http://www.ejemplo.com/sitemap1.xml.gz</loc>
<lastmod>2004-10-01T18:23:17+00:00</lastmod>
</sitemap>
<sitemap>
<loc>http://www.ejemplo.com/sitemap2.xml.gz</loc>
<lastmod>2005-01-01</lastmod>
</sitemap>
</sitemapindex>

Nota: Las direcciones URL de los Sitemap deben tener sustitución de entidades.

Definición de etiquetas XML del índice de Sitemap

Atributo Descripción
<sitemapindex> necesario Engloba la información sobre todos los Sitemaps incluídos en el archivo.
<sitemap> necesario Engloba la información de cada Sitemap individual.
<loc> necesario Identifica la localización del Sitemap.Esta localización puede ser un Sitemap, un archivo Atom, un archivo RSS o un archivo de texto simple.
<lastmod> opcional Identifica la fecha en que el correspondiente Sitemap fue modificado. No se corresponde con la fecha en que alguna de las URL del Sitemap cambió. El valor de esta etiqueta debe estar en formato ‘Datetime‘ de W3C.Ofreciendo la fecha de la última modificación posibilitas a los motores de búsqueda a recuperar sólo una parte de los Sitemaps en el índice, es decir, una araña debería solo acceder a Sitemaps que fueron modificados a partir de una determinada fecha. Este mecanismo de solicitud incremental de Sitemaps permite el descubrimiento rápido de nuevas URLs en sitios muy grandes.

Localización de los archivos Sitemap

La localización de un archivo Sitemap determina el grupo de URLs que pueden ser incluídas en ese Sitemap. Un Sitemap localizado en http://ejemplo.com/catalogo/sitemap.xml puede incluir cualquier URL que comience por http://ejemplo.com/catalogo/ pero no puede incluir URLs que comiencen por http://ejemplo.com/imagenes/.

Si tienes permisos para modificar http://ejemplo.com/ruta/sitemap.xml, se da por supuesto que también tienes permisos para ofrecer información de URLs con el prefijo http://ejemplo.com/ruta/. Ejemplos de URLs consideradas válidas en http://ejemplo.com/catalogo/sitemap.xml incluirían:

http://ejemplo.com/catalogo/mostrar?objeto=23
http://ejemplo.com/catalogo/show?objeto233&usuario=3453

URLs que no se considerarían válidas en http://ejemplo.com/catalogo/sitemap.xml incluirían:

http://ejemplo.com/imagenes/mostrar?objeto=23
http://ejemplo.com/imagenes/show?objeto233&usuario=3453
https://ejemplo.com/catalogo/pagina1.html

Date cuenta que esto significa que todas las URLs listadas en el Sitemap deben incluir el mismo protocolo (http, en este ejemplo) y estar alojadas en el mismo lugar que el Sitemap. Como ejemplo, si el Sitemap se encuentra en http://www.ejemplo.com/sitemap.xml, no puede incluir URLs de http://subdominio.ejemplo.com.

Las URLs que no se consideren válidas serán desechadas sin más. Recomendamos fuertemente que sitúes tu Sitemap en el directorio raíz de tu servidor web. Por ejemplo, si tu servidor web está en ejemplo.com, entonces tu índice Sitemap estaría en http://ejemplo.com/sitemap.xml. En ciertos casos, puedes necesitar producir diferentes Sitemaps para diferentes rutas (por ejemplo si los permisos de seguridad en tu organización separan el acceso de escritura a diferentes carpetas).

Si envías un Sitemap utilizando una ruta con un número de puerto, debes incluir ese número de puerto como parte de cada URL listada en el Sitemap. Por ejemplo, si tu Sitemap se encuentra en http://www.ejemplo.com:100/sitemap.xml, entonces cada URL listada en el Sitemap debe comenzar con http://www.ejemplo.com:100.

Validando tu Sitemap

Los siguientes esquemas XML definen los elementos y atributos que pueden aparecer en tu archivo Sitemap. Puedes descargar este esquema de los siguientes enlaces:

Para Sitemaps:
http://www.sitemaps.org/schemas/sitemap/09/sitemap.xsd

Para índices de Sitemaps:
http://www.sitemaps.org/schemas/sitemap/09/siteindex.xsd

Existen varias herramientas disponibles para ayudarte a validar la estructura de tu Sitemap basado en este esquema. Puedes encontrar un listado de herramientas relacionadas con XML en las siguientes direcciones:

http://www.w3.org/XML/Schema#Tools
http://www.xml.com/pub/a/2000/12/13/schematools.html

Para validar tu Sitemap o índice de Sitemap contra un esquema, el archivo XML necesita cabeceras adicionales como se muestra a continuación.

Sitemap:

<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
...
</url>
</urlset>

Índice de Sitemap:

<?xml version='1.0' encoding='UTF-8'?>
<sitemapindex
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/siteindex/0.9">
<sitemap>
...
</sitemap>
</sitemapindex>

Extendiendo el protocolo Sitemap

Puedes extender el protocolo Sitemap utilizando tu propio ‘namespace’. Simplemente especifícalo en la etiqueta raíz. Por ejemplo:

<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemaps/0.9
http://www.sitemaps.org/schemas/sitemaps/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap"
xmlns="http://www.example.com/schemas/example_schema">
<!-- namespace extension -->
<url>
...
</url>
</urlset>

¿Cómo enviar un sitemap a Google?

Una vez que hayas creado el archivo Sitemap y situado el mismo en tu servidor, necesitas informar a los motores de búsqueda que soporten este protocolo de su localización enviándoselo por su interfaz de envíos o una solicitud HTTP.

Así los motores de búsqueda pueden acceder a tu sitemap y hacer que sus arañas dispongan de las URLs.

Para enviárselo a Google, tienes que entrar en el Google Search Console, te registras (con una cuenta Google, como no) y una vez dentro sigues las instrucciones que te dan para enviarles el sitemap. Pero básicamente lo que tienes que hacer es guardar el sitemap en formato .xml que te bajaste de xml sitemaps y subirlo a la carpeta raíz de tu web.

Una vez dentro de Search Console, les indicas la url de tu sitemap para que lo encuentren y visiten las páginas que hay en él. Después, y si todo va bien, sólo tienes que esperar unas semanas para ver crecer el número de páginas indexadas de tu web.

 

6 respuestas

  1. Hola, me gustaría que alguien me ayudara diciéndome cuales son los pasos para generar el sitemap con la herramienta que tiene Google.

  2. ¿Alguien me podría informar sobre pubsubhubbub?
    Me gustaría ponerlo en mi web pero no sé si es seguro y si necesita mucha configuración…
    Un saludo y gracias!

  3. Yo tengo programado un script en php que me genera el sitemap dinámicamente, si alguien está interesado que se ponga en contacto conmigo.

    Un saludo,
    Raúl

Deja una respuesta