Crear un sitemap automáticamente para google, yahoo, etc...
08-04-2008 > MoccoMostrar o escribir comentarios (dudas) sobre este artículo
Sistema: Cualquier web con soporte PHP y alojada en un servidor Linux.
Google nos presenta una aplicación para crear los sitemap a partir de un archivo plano de texto, donde cada linea contiene una URL del dominio. Mediante ese script escrito en Python hay disponeble muchos parámetros de configuración y optimización.
No obstante, para esta humilde web, solo se quiere un script que genere automáticamente los sitemaps a partir de la información de la base de datos. Así, cuando se crea una entrada nueva en la website, no se tiene que escribir manualmente la URL del artículo en el Sitemap.
Según la estructura de esta website, se recupera de la base de datos el identificador (id), juntamente con la prioridad (pr) del artículo. Estos valores se introducen cuando se redactan los documentos. El script estar implementado con PHP, pero es muy simple y fácil de llevar a otros lenguajes.
Crear un archivo llamado “generadorSitemap.php” con el siguiente contenido, necesario adaptar los parametros de configuración:
<?php
require_once("./conexio.php"); //Conexión a la base de datos
$domini = "www.gurx.net";
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$sitemap .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">'."\n";
$sql = " SELECT id,pr FROM bdgurx ORDER BY id DESC; ";
$result = mysql_query($sql);
while ($reg = mysql_fetch_array($result)){
$sitemap .= '<url>'."\n";
$sitemap .= '<loc>http://www.gurx.net/?sec=documentacio&element='.$reg["id"].'</loc>'."\n";
$sitemap .= '<priority>'.$reg["pr"].'</priority>'."\n";
$sitemap .= '</url>'."\n";
}
$sitemap .= '</urlset>'."\n";
$archivo=fopen("sitemap.xml","w");
if ($archivo) {
if (fputs ($archivo, $sitemap)) echo "Sitemap creado correctamente!";
else echo "No se ha podido crear el sitemap!";
}
fclose ($archivo);
?>
Subir el archivo en la raíz del directorio virtual (directorio que contiene la página web). También es necesario dar permisos de escritura a ese directorio para que el script pueda crear el archivo sitemap.xml
> scp ./generadorSitemap.php user@gurx.net:/da.../x...x/gurx.net/
Por último, se inserta una entrada en el crontab del sistema Linux, para que se ejecute automáticamente una vez cada día.
> crontab -e (insertamos la siguiente linea)
0 2 * * * wget http://www.gurx.net/generadorSitemap.php
Anotaciones:
>Es necesario estar registrado en Google. Si estas registrado se puede acceder a la sección de Herramientas de Webmasters. En esta sección se puede comunicar a Google cuales son tus dominios, indicar el nombre del Sitemap (pe. sitemap.xml) y hay disponibles muchas más herramientas de información y optimización.
