creación de un sitemap con php
Crear un sitemap para que los motores de busquedan indexen nuestras páginas webs, es muy interesante. Existen diversos servicios online que nos permitiran generar sitemaps de forma automática, y en muchos casos, pueden ser suficiente. El problema, radica cuando nuestro web genera páginas de forma dinámica, y entonces, cada vez que generamos nuevo contenido, debemos ir a estos sitios, volver a actualizar el sitemap, y subir a nuestro servidor el nuevo sitemap.Vamos a generar un script PHP que nos permitirá generar el sitemap de forma dinámica:
Lo primero que tenemos que hacer, es crear el archivo donde estará nuestro sitemap: sitemap.php.
Empecemos con el código:
<?php
header("Content-type: text/xml; charset=UTF-8");
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
Esta sería la parte común a cualquier página web. Primero declaramos el tipo de documento y después la codificación UTF-8, para evitar problemas con los caracteres especiales.
Ahora, busquemos en nuestra base de datos, las páginas correspondientes:
<?php
//Imprimimos artículos
$sql = $mysql->query("SELECT * FROM tabla WHERE condiciones");
while($result = $mysql->f_obj($sql)){?>
<url>
<loc><?php print $dir."/".$result->id."/".utf8_encode(htmlentities($result->titulo)); ?></loc>
<changefreq>monthly</changefreq>
</url>
<?php
Este código tendrás que adaptarlo a tus necesidades, es decir, deberas crear tu el query a mysql, y la dirección web, en función de como tengas planteadas las urls de tu web. La estructura básicamente es:
<url>
<loc>URL</loc>
<changefreq>monthly</changefreq>
</url>
El campo changefreq, determina la frecuencia de actualización del enlace, puede ser: always, hourly, dialy, weekly, monthly, yearly o never, esto ya depende de los que actualices cada una de las páginas. Por ejemplo, para un artículo, poner mensualmente, es lo adecuado, ya que no se suelen actualizar mucho, pero para la página principal de tu web, es aconsejado poner a diario.
Ahora solo nos falta cerrar el tag:
</urlset>
Un problema frecuente, viene con la codificación UTF8 en las urls, es decir, en el tag <loc>. Para evitar problemas, es mejor usar:
<?php
utf8_encode(htmlentities(CADENA_DE_TEXTO));
?>
Así no nos dará error de codificación el archivo XML.
