Una manera sencilla de facilitar el trabajo de los buscadores, es actualizar el sitemap y realizar un ping cuando actualizamos o modificamos el contenido de nuestra web. En el caso de utilizar wordpress, tenemos plugins específicos que realizan esta función.
Pero vamos a ver un sencillo método que podemos incluir en nuestras propias paginas web desarrolladas en php.
El script consta de dos partes:
La primera, es la encargada de generar nuestro fichero sitemap.xml, y se ejecutara cuando modifiquemos el contenido de la web desde el panel de control (por ejemplo, insertamos, editamos o eliminamos una noticia).
La segunda, se encarga de realizar los ping a los buscadores, indicando la ruta del fichero sitemap.xml.
Generación del sitemap.xml
// Cargamos la clase de acceso a la BD
@include_once("include/MySQL.class.php");
// Cargamos el ficheros con los datos de configuracion
@include_once("include/config.inc.php");
// Creamos objeto Base de datos
$BD= & new MySQL($servidor,$usuario,$pass,$bd);
$BD->conectarBD();
// Consulta a la Base de Datos
$res=$BD->consultaSQL("SELECT * FROM noticias ORDER BY fecha DESC LIMIT 10");
while ($fila=$res->extraeFila()){
$noticias[]=$fila;
}
// Instanciamos las etiquetas y valores en una sola variable
$sitemap ="< ?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
$sitemap .="<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\r\n";
$sitemap .="<url>\r\n";
$sitemap .="<loc>http://www.midominio.com</loc>\r\n";
$sitemap .="<changefreq>daily</changefreq>\r\n";
$sitemap .="<lastmod>".$noticias[0]['fecha']."</lastmod>\r\n";
$sitemap .="<priority>1.0</priority>\r\n";
$sitemap .="</url>\r\n";
foreach($noticias as $noticia){
$sitemap .="<item>\r\n";
$sitemap .="<url>\r\n";
$sitemap .="<loc>http://www.midominio.com/noticias/".$noticia['id']."</loc>\r\n";
$sitemap .="<lastmod>".$noticia['fecha']."</lastmod>\r\n";
$sitemap .="<priority>0.8</priority>\r\n";
$sitemap .="</url>\r\n";
$sitemap .="</item>\r\n";
}
$sitemap .="</urlset>\r\n";
//escribimos el archivo sitemap.xml en el directorio raíz
$fichero= fopen("sitemap.xml" , "w");
// escribimos la variable creada en el fichero sitemap.xml
fwrite($fichero, $sitemap);
// cerramos el fichero sitemap.xml
fclose($fichero);
$BD->cierraBD();
Realizar ping a los buscadores
Hacemos una llamada a los servicios de ping de los buscadores, indicándole la ruta del sitemap.xml de nuestro dominio (cambiar http://www.midominio.com/sitemap.xml por nuestra propia ruta).
//Hacemos un ping a las las url de los buscadores para avisar Google, Yahoo y Ask $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=http://www.midominio.com/sitemap.xml'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/webmasters/sitemaps/ping?sitemap=http://www.midominio.com/sitemap.xml'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec(); curl_close($ch); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://submissions.ask.com/ping?sitemap=http%3A//www.midominio.com/sitemap.xml'); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec(); curl_close($ch);
Con este código daremos un toque a los principales buscadores, indicándoles que se ha modificado nuestra web, y dandole la ruta del sitemap.xml para facilitarle la indexación de los nuevos contenidos.