WRInaute passionné
J'avais promis dans un post précédant de publier mon script PHP de génération dynamique de fichier sitemap.xml, alors voila.
Le principe consite à faire générer les données du fichier sitemap par les visiteurs de votre site (bien pratique pour les sites ayant de nombreuses pages générées dynamiquement). A chaque visite, on génére un petit fichier (s'il n'existe pas) contenant l'url de la page et la date courante:
Maintenant on fait un script que l'on place par exemple à la racine du site sous le nom monsitemap.php:
Maintenant on ajoute une regle dans le .htaccess:
Je vous laisse le soin d'intégrer le script nécéssaire à l'effacement des fichiers du repertoire sitemaps dans votre backoffice pour gerer les mises à jour! :wink:
note: Pour les sites qui comprennent un nombre de pages proche de la limite fixée par google pour le fichier sitemap, je publierais prochainement une adaptation gérant les fichiers sitemaps en cascade....
Le principe consite à faire générer les données du fichier sitemap par les visiteurs de votre site (bien pratique pour les sites ayant de nombreuses pages générées dynamiquement). A chaque visite, on génére un petit fichier (s'il n'existe pas) contenant l'url de la page et la date courante:
Code:
<?php
$urldemandee=$_SERVER['REQUEST_URI']; // on récupère l'url de la page courante
// on met cette url en forme pour en faire un nom de fichier valide
$urldemandee=ereg_replace('/','-',$urldemandee);
if($urldemandee=="-") $urldemandee="-index.html";
$fichierSitemaps="sitemaps".$urldemandee;
$fichierSitemaps=str_replace('sitemaps-','',$fichierSitemaps);
// on teste si le fichier existe déjà
if(file_exists("/cheminabsolut/sitemaps/ ".$fichierSitemaps)==false) {
$fd = fopen("sitemaps/".$fichierSitemaps, "w"); //on ouvre le fichier
if ($fd) {
if($_SERVER['REQUEST_URI']=="/") $filtrePage="/index.html";else $filtrePage=$_SERVER['REQUEST_URI']; //on evite de dupliquer domaine.com et domaine.com/index.html
$sitemapsContent="<url>\n\t<loc>http://www.domaine.com".$filtrePage."</loc>\n\t<lastmod>".date('Y-m-d')."T".date('H:m:s+00:00')."</lastmod>\n</url>\n"; //on formate les infos pour le XML
fwrite($fd,$sitemapsContent); //on ecrit le fichier
fclose($fd);//on ferme le fichier
}
}
?>
Maintenant on fait un script que l'on place par exemple à la racine du site sous le nom monsitemap.php:
Code:
<?
echo'<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<urlset xmlns="https://www.google.com/schemas/sitemap/0.84">
';
foreach (glob("/cheminabsolut/sitemaps/*.*") as $filename) {
$filename = str_replace("/cheminabsolut/','',$filename);
include ($filename);
}
echo"</urlset>";
?>
Maintenant on ajoute une regle dans le .htaccess:
Code:
RewriteRule ^sitemap\.xml$ /monsitemap.php [QSA,L]
Je vous laisse le soin d'intégrer le script nécéssaire à l'effacement des fichiers du repertoire sitemaps dans votre backoffice pour gerer les mises à jour! :wink:
note: Pour les sites qui comprennent un nombre de pages proche de la limite fixée par google pour le fichier sitemap, je publierais prochainement une adaptation gérant les fichiers sitemaps en cascade....