Crea tu propio SITEMAP automatizado con Php y MySql
Muchas
veces tenemos el problema de generar un SITEMAP para nuestra
web que se actualice cada vez que tenemos un cambio o una nueva publicación...
En Internet tenemos muchos servicios online gratuitos para generar nuestro
SITEMAP, pero con limitaciones de un número de links; existe la solución de
crear un Scrip en PHP para autogenerar nuestro SITEMAP con un
solo click cada vez que lo necesitemos.
Sigue este
artículo donde te enseño como lograr lo antes dicho...
Qué es un sitemap
El Sitemap es un archivo
que consiste en un listado de las páginas que contiene un sitio web y
que se utiliza por los webmasters o desarrolladores web,
para informar a los buscadores de las mismas, facilitando que sus robots,
al leer este archivo, rastreen de manera más óptima la totalidad del sitio web.
Los
buscadores que utilizan este protocolo de Sitemaps son: Google,
pionera creando Google Sitemaps, Yahoo!, Bing, Ask.com y MSN.
El
formato que se debe usar a la hora de crear este archivo es .XML, aunque los
motores de búsqueda también admiten y leen otros archivos de texto y fuentes
web RSS. Se listan en él las URL que queremos indexar del sitio web yse
suele acompañar de metadatos que aportan información fundamental a los
buscadores sobre la fecha de su última actualización, jerarquía de las URL y la
frecuencia de modificación del mismo.
Ventajas del sitemap
Ayudan
a los buscadores a rastrear de manera más óptima e inteligente nuestro
sitio web, pudiendo llegar, gracias a su jerarquización, a niveles más
profundos e indexar así el contenido que deseamos tener en Google.
Por
tanto, mejoran la indexación, de manera que pueden estar tus
contenidos disponibles para el usuario en los buscadores cuando éstos estimen
oportuno mostrarlos por considerarlos relevantes para las búsquedas realizadas.
Normalmente
un sitio web bien enlazado, estructurado y de una arquitectura jerárquicamente
bien construida, puede ser rastreado sin problemas por losbots de
los buscadores, pero se hace fundamental tenerlo cuando es un sitio web
muy grande, en el que pueden no llegar a rastrear páginas muy profundamente
o deficientemente enlazadas; para sitios nuevos, con pocos enlaces
externos y que queremos indexar lo antes posible; o si tienes una web
de noticias u otros contenidos de soporte interactivo, para que Google los
categorice y gestione de manera óptima.
Facilitan
el trabajo a los rastreadores al indicarle con los metadatos el tipo de
contenido que contiene cada URL o grupo de éstas, al poder
especificar en el sitemap el tipo de archivos que va a encontrar: vídeos,
imágenes o para móviles.
Formato XML de SITEMAPS
Este
documento describe el esquema XML para el protocolo Sitemap.
El
formato del protocolo Sitemap consta de etiquetas XML.
Todos los valores de datos de un Sitemap deben incluir caracteres de escape de
entidad. El propio archivo debe estar codificado en UTF-8.
El
Sitemap debe:
Comenzar
con una etiqueta de apertura <urlset> y terminar con una
de cierre </urlset>.
Especificar
el espacio de nombres (protocolo estándar) en la etiqueta urlset.
Incluir
una entrada <url> para cada dirección URL como
una etiqueta XML principal.
Incluir
una entrada secundaria <loc> para cada etiqueta principal <url>.
Las
demás etiquetas son opcionales. La compatibilidad de estas etiquetas opcionales
puede variar en función del motor de búsqueda. Consulte la documentación
específica de cada uno de ellos para obtener información detallada.
Ejemplo de un Sitemap en formato XML
El siguiente ejemplo muestra un Sitemap que
contiene únicamente una URL y usa todas las etiquetas opcionales. Las etiquetas
opcionales están en cursiva.
<?xml version="1.0"
encoding="UTF-8"?><
urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
> <url
> <loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url></urlset>
Teniendo en
cuenta los conceptos y la estructura de un Sitemap en XML, procederemos ha
explicar el archivo PHP, cane resaltar que no soy un profesional
en informática o algo similar, solo soy un aficionado y quería
compartir algo que se me ocurrió hacer. Obviamnete el scrip requiere
de ajustes o correcciones para que tenga una mejor estructura y funcionalidad.
*Para que
funcione necesita contar ya con una base de datos BD.
Conexión con la BD
Se hace la consulta a la Tabla ENTRADAS en la BD
(en este caso solo se está consultando la ID y Fecha ya que son
los únicos campos que requerimos) y se ordena de mayor a menor ORDER
BY id DESC por
la ID para que la ultima entrada o post
este primero.
include("conexion.php");
$sql = "SELECT id, fecha FROM entradas ORDER BY id
DESC";
!$resultado = $mysqli->query($sql);
Creación del archivo XML
Se asigna a la variable $nombre_archivo en nombre que queremos
darle a nuestro archivo XML, que en este caso es SITEMAP.XML
$nombre_archivo =
"sitemap.xml";
if(file_exists($nombre_archivo)){
$mensaje = "El Archivo
$nombre_archivo se ha modificado";
}else{
$mensaje = "El Archivo
$nombre_archivo se ha creado";
}
Creación del cuerpo del archivo XML
Creamos la cabecera del XML y ponemos como primer enlace la dirección
WEB de nuestra página (esto sería opcional, si es necesario podríamos empezar
solo con los enlaces de las publicaciones, entradas o post) y tendríamos que
dejar lo que está entre las etiquetas URL (azul).
$cuerpo1=" ";
$cuerpo1.=
'<?xml version="1.0" encoding="UTF-8"?>
<urlset 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"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
//se podría obviar
esta parte
<url>
<loc>http://MIWEB.com/</loc>
<lastmod>2018-06-12</lastmod>
<changefreq>daily</changefreq>
<priority>1</priority>
</url>';
//Aquí irían los enlaces de nuestras publicaciones o posts ya sean 10
o 1000 enlaces, todos se auto generán repetidamente con la estructura XML.
$cuerpo2=
" ";
while
(($row = $resultado->fetch_row()) ) {
//La varible
$row[0] contiene el ID de la entrada con el que se conforma el ULR de cada entrada en la WEB, esta parte creara
tantas lineas como entradas o post tenga mi WEB.
$cuerpo2.= '<url>
<loc>http://MIWEB.com/entrada.php?valor1='.$row[0].'</loc>
<lastmod>'.$row[1].'</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>';
}
//Aquí puse los enlaces estáticos, como son los enlaces de los menus
pagina de contacto, quienes somos, home, etc etc..
$cuerpo3= " ";
$cuerpo3.=
'<url>
<loc>http://MIWEB.com/home.html</loc>
<lastmod>2018-06-12</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://MIWEB.com/contacto.html</loc>
<lastmod>2018-06-12</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>';
//Variables que conforman el cuerpo del XML que se actualizará.
$cuerpo= $cuerpo1.$cuerpo2.$cuerpo3;
if($archivo =
fopen($nombre_archivo, "c")){
if(fwrite($archivo,
$cuerpo)){
//echo "Se ha ejecutado
correctamente";
}else{
echo "Ha habido un
problema al crear el archivo";
}
fclose($archivo);
}
Lectura del archivo XML en PHP
$nombre_archivo =
"sitemap.xml";
if(file_exists($nombre_archivo)) {
echo
nl2br(file_get_contents($nombre_archivo));
}else{
$mensaje = "El archivo no
existe";
}
Hasta aquí sería el archivo PHP para
generar el SITEMAP, para
implementarlo se podría poner en un botón en nuestro panel de administrador
web, así podríamos generar un nuevo SITEMAP cada vez que queramos. También se
podría incorporar en el scrip que nos permite generar entradas, publicaciones o
post nuevos para que cada vez que pongamos algo nuevo se genere automáticamente
sin necesidad de darle a un botón.
Muchas veces tenemos el problema de generar un SITEMAP para nuestra web que se actualice cada vez que tenemos un cambio o una nueva publicación... En Internet tenemos muchos servicios online gratuitos para generar nuestro SITEMAP, pero con limitaciones de un número de links; existe la solución de crear un Scrip en PHP para autogenerar nuestro SITEMAP con un solo click cada vez que lo necesitemos.
DESCARGA AQUÍ EL ARCHIVO SITEMAP.PHP
Comentarios
Publicar un comentario