Mar 052013
 

Un sitemap XML es un documento que contiene la relación de URLs de un sitio web, incluyendo su importancia relativa y la frecuencia con la que se modifican. Esta información permite a los motores de búsqueda, como Google y Yahoo, ajustar sus procedimientos de rastreo e indexación del sitio. En este artículo explicamos la manera de generar el sitemap y enviárselo a los principales motores de búsqueda de manera automatizada.

Formato de un sitemap XML

En el siguiente ejemplo vemos la estructura de un sitemap XML:

<?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>2012-01-01</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
     ...
    </url>
    ...
</urlset>

Como vemos, el sitemap contiene un elemento raíz “<urlset>”, que consta de un conjunto de elementos “<url>”. Cada uno de los elementos “<url>” debe contener un elemento “<loc>”, y opcionalmente los elementos “<lastmod>”, “<changefreq>” y “<priority>”.

Generación del sitemap

La estructura de cada sitio web es diferente, por lo que no existe un único método de generación del sitemap que sea válido para todos. Ademas, parte de la información que aparece en el sitemap, como la frecuencia de cambio del contenido de una página o la prioridad de la misma, tiene que ser especificada durante la generación.

De todos modos, hay numerosas herramientas que ayudan a la generación de un sitemap, algunas de las cuales están recogidas en la página:

https://code.google.com/p/sitemap-generators/wiki/SitemapGenerators

Límites en el tamaño de un sitemap – sitemap index

Google impone un límite en el tamaño de un sitemap. El fichero no puede contener más de 50.000 URLs, y su tamaño descomprimido no puede ser superior a 50 MBytes.

Si un sitio web supera estos límites, debe generar varios sitemaps y crear un fichero “sitemap index” que los contenga. El siguiente es un ejemplo de un sitemap index del sitio “www.ejemplo.com”, que contiene dos sitemaps “sitemap1.xml” y “sitemap2.xml”:

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

Como vemos en el ejemplo, los sitemaps pueden estar comprimidos en formato gzip.

Envío del sitemap a Google

El sitemap puede ser enviado a Google de varias maneras:

  • mediante Webmaster Tools
  • incluyendo una referencia al mismo en el fichero “robots.txt”.
  • haciendo una solicitud HTTP GET a la url:

www.google.com/webmasters/tools/ping?sitemap=sitemap_url

En donde sitemap_url es la url del sitio, codificada con “URL Encode”. por ejemplo, si el fichero sitemap se encuentra en la url:

http://www.ejemplo.com/sitemap.gz

La solicitud HTTP GET se debe realizar a la url:

www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2Fwww.ejemplo.com%2Fsitemap.gz

En PHP, podemos utilizar la función urlencode() para codificar la url, y utilizar file_get_contents() para realizar la solicitud HTTP:

    $sitemapUrl = "http://www.ejemplo.com/sitemap.xml";
    $pingUrl="http://www.google.com/webmasters/sitemaps/ping?sitemap=" . urlencode($sitemapUrl);
    echo "Google ping url: " . $pingUrl . "n";
    $respuesta = file_get_contents($pingUrl);
    echo "Respuesta: " . $respuesta;

Envío del sitemap a Bing

Bing utiliza el mismo mecanismo que Google para el envío del sitemap. Lo único que hay que modificar es la url a la que se hace la solicitud HTTP GET:

    $sitemapUrl = "http://www.ejemplo.com/sitemap.xml";
    $pingUrl="http://www.bing.com/webmaster/ping.aspx?siteMap=" . urlencode($sitemapUrl);
    echo "Bing ping url: " . $pingUrl . "n";
    $respuesta = file_get_contents($pingUrl);
    echo "Respuesta: " . $respuesta;

Referencias:

 Publicado por en 8:06 pm

  2 Respuestas a “Cómo enviar un sitemap XML a Google y Bing en un script PHP”

  1. De donde sacas $respuesta? Creo que es $response :-/

    Saludos

 Deja un comentario

(requerido)

(requerido)