Google SiteMap personalizado con PHP y MySQL
Hace aproximadamente 3 semanas Google sacó un nuevo método o
sistema, para poder comunicar a su robot (googlebot) en que momento y
que páginas se han actualizado, cual es la importancia de la página,
cual es su frecuencia de actualización, y otros detalles más.

El archivo que Google tiene que interpretar es de extensión .xml, muy simple y fácil de entender, su nombre es Sitemap.xml y su estructura es la siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.yoursite.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.yoursite.com/catalog?item=12&desc=vacation_hawaii</loc>
<changefreq>weekly</changefreq>
</url>
<url>
<loc>http://www.yoursite.com/catalog?item=73&desc=vacation_new_zealand</loc>
<lastmod>2004-12-23</lastmod>
<changefreq>weekly</changefreq>
</url>
</urlset>
Como ven, se trata de un fichero con muy pocas etiquetas, las cuales se repiten por cada página. La etiqueta principal es el tag urlset, padre de todas las demás, luego una etiqueta url, que es el padre de las demás etiquetas que identifican a cada página, dentro de esta encontramos las etiquetas loc (dirección url de la página), lastmod (última fecha de actualización), chanfreq (frecuencia con que se actualiza la página), priority (la prioridad de esa página con respecto a las demás). Debemos dejar en claro que sólo las etiquetas padres y la loc son obligatorias, las demás se recomiendan para optimizar la actualización de nuestras páginas, pero son opcionales.
Conociendo esta estructura, lo que debemos hacer es crear un fichero php, que a su vez nos cree el archivo "sitemap.xml" siguiendo las pautas mostradas.
Un poco de PHP
Para distintos cms, como ya lo hemos comentado, se han publicado scripts que crean el sitemap.xml, casos como wordpress o Movible Type no tienen problemas. Pero, ¿Qué sucede con quienes no utilizamos estos cms preconstruidos, sino por el contrario nos hemos creado uno? Pues muy simple, nosotros debemos de creárnoslo. No sabes como empezar... no te preocupes, que si gustas puedes ir al final de este artÃculo y bajarte el código que he creado para este sitio, realmente recomiendo
usarlo, con tan sólo unos dÃas de utilizarlo he recibido constantes visitas de googlebot escaneando todos los ficheros que le indico.
No olvides
- Que después de descargar el código, tienes que adaptarlo a tu site, es algo tan simple como cambiar: la ruta al fichero que se contacta a
la BD y la consulta propiamente dicha. - El archivo sitemap.xml debe de crearse en el directorio raÃz de tu site.
- Debes asignarle a sitemap.xml, permiso de escritura CHMOD 666, para que el script php lo pueda modificar.
La Consulta a la BD MySQL
La consulta a la Base de datos, como te darás cuenta, te selecciona todos los ids y fechas de la tabla artÃculos en orden de publicación
más reciente. Seguidamente mediante la función SPRINTF
le asignamos un limite: mostrar los 7 primeros artÃculos seleccionados en la consulta a la BD, esto lo instanciamos en la variable 1, y
creamos un array de esta variable. Luego hacemos lo mismo para mostrar los siguientes 7 artÃculos, y posteriormente para los restantes. El
motivo de este distingo es el poder asignarle a los 7 primeros una mayor prioridad que a los más pasados.
Esta consulta la puedes modificar, por ejemplo si tu tabla contiene información sobre cual artÃculo es de mayor importancia. O crearte más consultas e incluirlas en este fichero.
Nuestro objetivo: Crear el XML
Escribimos el fichero sitemap.xml mediante las funciones fopen, fwrite y fclose.
Vamos a ir sumando cada una de las etiquetas (toda la información) a una sola variable llamada $sitemap, recuerda que debes respetar la estructura ya mostrada.
Ahora, basta con ejecutar el código PHP y se actualizará el Sitemap.xml.
Por lo que debes crear desde tu panel de control, un link al fichero sitemap.php, para que cada vez que actualicemos alguna página, lo
ejecutemos. Y en este encontrarás un link al fichero sitemap.xml, para comprobar su actualización.
Pero aquà no acaba todo
Luego, de actualizar tu sitemap.xml, debes comunicarlo a Google, para esto entra a esta web, y con los datos de tu correo gmail podrás
entrar sin problemas, luego deberás poner la dirección url del archivo sitemap.xml, creando en tu cuenta, un enlace a éste. De esta manera,
cada vez que actualices tu site, deberás entrar a tu cuenta y con presionar un clic le comunicas a google que visite tu sitemap. Algo muy
parecido con los directorios de weblogs. Si todavÃa no tienes tu cuenta gmail, ponte en contacto o deja tu comentario.
Para descargar el script deben registrarse e iniciar sesión en Baluart.NET y luego regresar a este post. En realidad es muy simple de entender y personalizar… además que te sirve para saber como crear archivos xml, rss 1, rss2, u otros, pues el procedimiento es el mismo.





Gracias por el articulo! necesitaba una breve explicacion de como hacer un sitemap.
- responder
Enviado por Carlos Trinidad (no verificado) el Jue, 04/27/2006 - 04:59.Muy bien, también he encontrado este otro ejemplo de Sitemap con php para personas con CMS:http://elmartin.org/?m=textos&t=crear-un-sitemap-para-ser-indexado-en-los-buscadores-con-php&op=v&id=10
- responder
Enviado por Amancio (no verificado) el Mar, 12/05/2006 - 09:13.Muy explicativo y util para los que usam CMS. Nosotros, en la Revista www.Orkut.etc.br, hemos hecho nuestro sitio con el drupal, por eso ahora buscamos una solucion adecuada... Gracias.
- responder
Enviado por Orkut.etc.br (no verificado) el Vie, 05/11/2007 - 18:29.Estoy realizando un proyecto art
- responder
Enviado por David (no verificado) el Jue, 07/12/2007 - 15:27.de antemano muchas gracias por la explicacion en vuestro articulo, es justamente lo que estaba buscando. Estoy tratando de modificar el script que habeis puesto para descargar, pero haceis un include a un fichero que me imagino teneis vosotros para conectar a la base de datos.// Nos conectamos a la Base de Datosrequire_once('Connections/connBD.php');// Consulta a la Base de Datosmysql_select_db($database_connBD, $connBD);$consulta = "SELECT id, date FROM blog_articulos ORDER BY id DESC"; // 7
- responder
Enviado por silvia (no verificado) el Jue, 08/02/2007 - 07:33.Tengo el mismo problema y duda de Silvia, adem
- responder
Enviado por Jaime (no verificado) el Dom, 12/02/2007 - 09:40.el fichero conBD.php supongo q lo
- responder
Enviado por txuki (no verificado) el Dom, 01/06/2008 - 08:42.Les agradezco toda la informacion de su web. Estoy tratando de aprender para resolver el tema de que los robots de Google tomen info de mi base de datos.
Esta roto el link de scripts hecho por Uds. ¿podrian facilitarmelo por favor?
Si es posible, lo intentare con el
Un abrazo
Brinda Mair
- responder
Enviado por Brinda (no verificado) el Sáb, 05/10/2008 - 16:28.Brinda, inicia sesión y luego regresa a este post para descargar el script.
Saludos.
- responder
Enviado por baluart el Sáb, 05/10/2008 - 20:42.se te agradece muy buena la expliaion muy bueno felicitaciones sigue asá¡¡ ..
- responder
Enviado por Augusto Cando (no verificado) el Dom, 09/07/2008 - 16:52.tu nombre en el lugar de el logo de Google,Simpsons,Futbol,Juanes,Shakira,Tekken,Juanes,y 500 logos más
miralos en el siguiente enlace:
http://www.googlemanias.webcindario.com/esp/name.htm
- responder
Enviado por Richard Olives (no verificado) el Jue, 10/23/2008 - 12:51.Hola que tal.. muy bueno el script !!!
Ahora hay alguna manera automatica de ejecutar el script sitemap.php para actualizar el sitemap.xml..
Me refiero a que sea automatico tambien la ejecusion del sitemap.php .. no se cada 2 horas que se ejecute el sitemap.php .. Me explico ??
- responder
Enviado por softmaster el Lun, 12/15/2008 - 16:36.Hola amigos pues he leido el comentario pero no soy tan experto para entenderlo si alguien me puede ayudar a indexar mi pagina, es mi primer proyecto web aun me falta mucho por aprender pues la he hecho empiricamente pero porfa ayudenme a indexarla por lo menos en el buscador de google.
- responder
Enviado por Milton (no verificado) el Lun, 12/22/2008 - 08:33.Gracias por el script, por la explicacion que diste es impresionante como te facilita las cosas...
El tema es que lo estoy probando y no logro dar con la configuracion, lo que deduzco es lo siguiente...
require_once('Connections/connBD.php');
Esta linea es la que hace conneccion con la base de datos, mejor dicho ejecuta el archivo connDB.php, el cual tiene la informacion de la UserDB, HostDB y PassDB... Necesarios para la conexion...
Si alguien me puede ayudar estare muy agradecido... mi mail es el siguiente alanbi86@gmail.com
- responder
Enviado por AlanB el Mié, 01/28/2009 - 14:52.hey amigo no nos cumpliques la vida, tu aporte es bueno pero deberias de dejarnos un link limpio si tener k registrarnos ni nada o por lo menos publique el codigo aqui , de todos modos gracias por tomarte la molestia ..
- responder
Enviado por galax13a (no verificado) el Sáb, 11/07/2009 - 13:42.si alguien es tan amable que suba este scrip a rapishare o algo, ya que al momenton de mi registro no permite que mi correo sea .es que gran error
- responder
Enviado por galax13 (no verificado) el Sáb, 11/07/2009 - 13:57.Deja tu comentario