Sitemap google

Como imagino que ya sabéis, Google hace uso de un protocolo sitemap en XML para poder informar a su robot de búsqueda a cerca de las paginas que se pueden rastrear en tu web, con qué frecuencia y la importancia que tiene para ti cada una de esas páginas.

Google nos indica como debe ser el formato del sitemap y nos explica para que sirve cada etiqueta.

Ejemplo de sitemap en XML:


<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

Tu sitemap debe ser algo parecido a este, solo debes adaptar a tu web las siguientes etiquetas:

  • loc: Url de la pagina que deseas añadir al sitemap.
  • lastmod: Fecha de la última modificación en formato W3C de fecha y hora o simplemente en formato: YYYY-MM-DD.
  • changefreq: Información acerca de cada cuanto tiempo cambia la pagina que indicaste en la etiqueta loc. (always, hourly, daily, weekly, monthly, yearly, never).
  • priority: Importancia para ti de esta página respecto a las demás de tu web, no afecta a tus paginas con respecto a otras webs. (los valores van desde 0,0 hasta 1,0).

Nota: En php, puedes obtener la fecha en ese formato con el siguiente código.

$lastmod = date ("Y-m-d");

Para cada url nueva que añadas al sitemap solo debes una colocar una nueva etiqueta URL y escribir el link y sus características en las etiquetas loc, lastmod, cangefreq y priority, tal como indiqué anteriormente.

Personalmente, antes usaba la página web xml-sitemap para generar mi sitemap, es una buena opción si no sabes usar PHP ni una base de datos para poder generar uno dinámico.




Sitemap Dinámico en PHP


Si tienes una web o un blog que actualizas con frecuencia, lo mejor es hacer un sitemap dinámico en PHP haciendo uso de una base de datos (en este caso MySql), a continuación pongo el código en PHP y XML y lo explicare brevemente:


<?
header
("Content-Type: text/xml; charset=UTF-8");

echo
'<?xml version="1.0" encoding="utf-8"?>';
?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<?
//Conexion Base de Datos
mysql_connect('localhost','Usuario','Password');
//Base de Datos Seleccionada
mysql_select_db('BaseDeDatos');

$result = mysql_query ("SELECT url, lastmod
FROM articulos ORDER BY fecha DESC"
);

while (
$row = mysql_fetch_array($result))
{
?>
<url>
<loc><? echo $row ['url']; ?></loc>
<lastmod><? echo $row ['lastmod']; ?></lastmod>
<changefreq>daily</changefreq>
<priority>0.50</priority>
</url>
<?
}

?>
</urlset>



La primera línea envía una cabecera que sirve para generar una página implementada en PHP como si fuera XML:

header("Content-Type: text/xml; charset=UTF-8");

Importante: Para poder llamar al archivo que contiene el sitemap con el nombre de sitemap.xml en lugar de sitemap.php debes añadir la siguiente línea en el archivo .htaccess, así el servidor lo que haría es interpretar .xml como si fuera .php.

AddType application/x-httpd-php .xml

Por si alguien no lo sabe, .htaccess es un archivo de configuración del servidor web apache. Y lo único que debes hacer es crearlo, escribir la línea anterior y colocarlo en tu web justo donde coloques sitemap.xml.




En las siguientes líneas se establece la conexión con la base de datos, sustituye Usuario, Contraseña y BaseDeDatos por tus datos.

Después se realiza una consulta en la base de datos que devuelve todas las Urls de la tabla articulos y su última modificación. Obviamente debes haber guardado estos datos anteriormente en una tabla de tu base de datos con campos similares.

Por último con un bucle while recorremos todas las Urls e imprimimos mediante XML las etiquetas correspondientes.

Nota: Las etiquetas changefreq y priority las puedes dejar todas tal cual o añadirle una condición que dependa, por ejemplo, de la fecha del artículo, cuanto más viejo sea el articulo menor valor le asignas a priority, y en ese caso changefreq en vez de daily podría ser weekly o monthly.

Si todo ah salido bien, ya tienes tu sitemap dinámico funcionando, deberia reflejar algo parecido a esto: Sitemap, si tienes alguna duda puedes dejar un comentario.




Subir el sitemap a Google


Si no lo has hecho ya, regístrate en herramientas para webmasters de google o entra con tu cuenta de gmail. Una vez en tu cuenta de webmaster ve al apartado sitemap, escribe la url donde se encuentra tu sitemap y pulsa en enviar, ahora solo espera unas horas hasta que google lo descargue.

Si te gustó el artículo...

Puedes seguir el blog a través de Twitter, Facebook o tu lector de feeds RSS.

Artículos Relacionados

6 Comentarios



Rh

#1 Rh


Me Sirvió de Gran Ayuda tu artículo, por si alguien quiere generarlo a partir de una lista de links:
<?
set_time_limit(0);
header("Content-Type: text/xml; charset=UTF-8");
echo "<?xml version="1.0" encoding="utf-8"?>";
?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<?

$archivo = file("maps.php");
$lastmod = date ("Y-m-d");

$lastmod = date ("Y-m-d");
foreach ($archivo as $link)
{
$link = ereg_replace("[[:space:]]+"," ",$link);
?>
<url>
<loc><? echo $link; ?></loc>
<lastmod><? echo $lastmod; ?></lastmod>
<changefreq>daily</changefreq>
<priority>0.80</priority>
</url>
<?}
?>
</urlset>

Octubre 14, 2009



Sergio GR

@Rh: Pues sí, es otro método dinámico de generar un sitemap, sin necesidad de recurrir a una base de datos. Gracias por la aportación

Octubre 14, 2009



Vosthell

#3 Vosthell


Saludos

Me funcionó correctamente, pero tengo una inquietud:

Al final en la parte que dices que debo subirlo y enviarle la url... lo envio tal como esta? es decir, con la extension .php?

wwww.pagina.com/Mipagina/sitemap.php

Otra pregunta es, ese .php puede ir en cualquier lugar?

Gracias

Octubre 22, 2009



Sergio GR

@Vosthell: Si, siempre tienes que poner la extensión del archivo, y siempre va al final.

Aunque como dije más arriba, si quieres, puedes cambiarlo a la extensión .xml, que es la extensión utilizada en los sitemap.

Pero para que funcione debes modificar el archivo de configuración .htaccess, y decirle que interprete la extensión .xml como si fuera .php, basta con poner esta línea:

AddType application/x-httpd-php .xml

Octubre 22, 2009



Fernando

#5 Fernando


Una sugerencia para todos, si tenéis que unir en vuestra url parámetros con "&" sustituirlo por "&amp;", son cosas del xml, así nos evitamos errores.

Enero 25, 2010



Sergio GR

@Fernando: Es cierto, aunque en un Sitemap, en vez de usar variables o parámetros, es mejor utilizar URLs amigables, así evitamos posibles problemas de indexación con los buscadores.

Enero 25, 2010



Deja tu Comentario

Asigna una imagen a tu email con Gravatar, si no sabes accede al siguiente Tutorial.



Asigna una imagen a tu email
Nombre
Email [Requerido]
Web/Blog

Información

  • Aplicamos el tag nofollow, y los enlaces con keywords en los comentarios podrían ser eliminados, intentamos mantener limpio el blog de spam.

  • Puedes usar las etiquetas <i>, <b>, <em>, <strong>, <a>, href, procura cerrarlas adecuadamente o tu comentario podria no mostrarse del modo que deseas.

  • Si necesitas que se vean en el comentario caracteres especiales como los usados en lenguajes de programacion como php, xhtml, etc., debes escribirlo dentro de las etiquetas [code] [/code], de lo contrario no se mostrará.

  • Procura no escribir enlaces que no tengan ninguna relación con el tema.

  • Si realizas una crítica procura argumentarla, pero sobretodo evita los insultos.