Googlehoy

Sitemap Dinamico

Como crear un sitemap dinámico, un feed dinámico, un javascript dinámico e incluso un css dinámico, que funcione y que sea aceptado por los navegadores y buscadores es muy fácil.


Antes de empezar a aprender como se hace un sitemap dinámico te recomiendes que visites el mejor tutorial/ejemplo en sitemaps que te puedes encontrar en la red http://www.google.es/sitemap.xml.
Fijate bién, antes de llegar aquí seguro que has visto otros tutoriales incluso el de google que explica como hacer un buen sitemap, pero el tuyo contiene miles de páginas y se añaden diariamente más.
Y claro, poner una a una a mano es casi imposible, pero un sitemap tiene que pesar poco y el de google pesa muy poquito.
¿Donde están las siguientes etiquetas de sitemap en el de google?
<lastmod></lastmod>
<changefreq></changefreq>

Como puedes ver, hasta google optimiza en el sitemap, pues tu igual, solo necesitas el loc y el priority, además fíjate que el priority va en decimales (miles).

Dicho esto vamos ha hacer un sitemap dinámico y con extensión xml para que así todos los bots nos los indexen. (Al 100% no te lo indexarán nunca, y eso no depende de como hagas el sitemap, sino de la diferencia entre el contenido, peso de la página, tiempo de carga, etc...)

1.- Estructura de un sitemap:
Todo sitemap debe empezar con las siguientes etiquetas:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
y ser cerrado con
</urlset>

Entre la apertura del urlset y su cierre debes insertar las etiquetas loc y priority.

2.- Rellenar sitemap:
Voy a usar una sentencia sql y asp ya que es con el código de programación que mejor me defiendo, pero es una simpre consulta a una bd y un bucle while que imprime los resultados.
Supongamos que tienes un apartado de ficha de clientes con una url parecida a /clientes-5.htm. Pongo htm en vez de asp ya que antes en .htacces habrás modificado la extensión del archivo para que parezca un htm, sino luego explicaré como hacerlo.
<%set rs=SiteMap_STRING.Execute("Select id_cliente From clientes")
do while not rs.EOF
rs.movenext()
response.write "<url>"
response.write "<loc>http://www.tuweb/carpeta-si-existiera/clientes-"&rs("id_cliente")&".html"</loc>"
response.write "<priority>Yo aquí uso una funcion random() para que no todos tengan la misma prioridad, pero también puedes ponerlo en si pagan a 0.800 y si no en 0.500, (No recomiendo que todo esté en 1.000)</priority>"
response.write "</url>"
Loop
rs.close()
set rs=Nothing%>
Este archivo se llamará sitemap.asp y así lo subirás a tu servidor.
¡No se me ha olvidado! Ya se que dije un xml dinámico y no un sitemap.asp.

3.- Modificar extensión:
Pues a abrir el .htacces. Si no tienes ninguna Rule creada, informate de como se hace en apache (si es tu caso) o en IIS.
Yo uso el ISAPI REWRITE para mi servidor ya que es Xindows.
Vamos a ello, ejemplo de un .htacces en IIS.
# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.50
RewriteEngine on
RewriteRule ^rss.xml? rss.asp [NC,LP,QSA]
RewriteRule ^sitemap.xml? sitemap.asp [NC,LP,QSA] <-- Esta es la línea que os interesa
RewriteRule ^javascript.js? javascript.asp [NC,LP,QSA]
RewriteRule ^(estilos-i([^/]*).css? estilos.asp?id=$1 [NC,LP,QSA]
RewriteRule ^estilos.css? estilos.asp [NC,LP,QSA]

He puesto otras líneas para que veáis diferentes ejemplos y así crear archivos en asp o php que se ahorren la cache y poder ponerlos en un subdominio sin el maldito cookieless.
Ahora accede a www.tuweb.com/sitemap.xml y verás que todo está ok.

Si te da algún error de parse, piensa que es codificación UTF-8 y que ni acentos ni ñ ni simbolitos se aceptan.
Piénsalo antes de crear una url que no será bién recibida por los bots.

Salu2.