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 a la sección descargas
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.Deja tu comentario