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.
[...] me surgió un problema mientras estaba preparando la entra anterior, “Hacer ping a buscadores en php“. Resulta que al intentar previsualizar un post, siempre me mostraba el error “Service [...]
Excelente post, me sirvió mucho la parte del final. Cuando haces el ping.
Gracias por compartir la información, hasta otra
Buenas.
Gracias, me alegro que te haya sido util.
Saludos.
Hola, está muy bueno este código php, podrías decirme qué debo colocar en la clase MySQL.class.php puesto que no lo he logrado hacer funcionar. Gracias de antemano=)
Buenas.
Es una clase que actua como interfaz de las llamadas a las funciones php de conexion con la base de datos mysql. No te preocupes, sustituye las funciones del tipo $BD->funcion por su funcion equivalente en php y listo.
Saludos.
Muy bueno lo del ping, lo incorporaré !!
Gracias