[script] Génération Google sitemap dynamique sans BDD
Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics
-

fandecine - Modérateur

- Messages: 2047
- Inscription: 2 Avr 2005
[script] Génération Google sitemap dynamique sans BDD
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!
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: Tout sélectionner
<?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: Tout sélectionner
<?
echo'<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<urlset xmlns="http://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: Tout sélectionner
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!
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....
Dernière édition par fandecine le Jeu Juin 30, 2005 14:26, édité 1 fois.
-

netsba - WRInaute discret

- Messages: 220
- Inscription: 17 Nov 2004
stp je suis tres interessé par ton script tu peux m'expliquer comment ca marche!!
esque c possible d'interdire des url de pages comme robots??
je suis pas tres intéligent je te l'accorde
le 1er script je le place sur toutes mes pages
le 2emme je change cheminabsolut en /home/www...
esque c possible d'interdire des url de pages comme robots??
je suis pas tres intéligent je te l'accorde
le 1er script je le place sur toutes mes pages
le 2emme je change cheminabsolut en /home/www...
- Jaunalgi
- WRInaute occasionnel

- Messages: 303
- Inscription: 11 Aoû 2004
Il y a 2 erreurs de progra dans ton code fandecine :
A enlever les deux fois
Pas encore testé le script.
---------
Edit :
Encore 2 erreurs :
- Code: Tout sélectionner
<?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(!==false) {
$fd = fopen("sitemaps/".$fichierSitemaps[color=red]"[/color], "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
}
}
?>
A enlever les deux fois
Pas encore testé le script.
---------
Edit :
Encore 2 erreurs :
- Code: Tout sélectionner
<?
echo'<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
';
foreach(glob("/cheminabsolu/*.*") as $filename) {
$filename = str_replace("/cheminabsolu/[color=red]',''[/color],$filename);
include ($filename);
}
echo "</urlset>";
?>
- Jaunalgi
- WRInaute occasionnel

- Messages: 303
- Inscription: 11 Aoû 2004
J'ai testé le script après avoir modifié les erreurs que je t'ai donné plus haut.
Voici le script après correction
ç'a l'air de bien fonctionner maintenant :
/** URL editée par Jaunalgi - sitemap hors ligne **/
Petit bémol : je ne veux pas indexer index.html pour éviter le conflit avec le domaine seul.
Voici le script après correction
- Code: Tout sélectionner
<?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("//cheminabsolu/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.grandprix4.org".$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
}
}
?>
- Code: Tout sélectionner
<?php
header("Content-Type: text/xml"); // On déclare un fichier XML
echo'<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
';
foreach(glob("/cheminabsolu/sitemaps/*.*") as $filename) {
$filename = str_replace("/cheminabsolu/","",$filename);
include ($filename);
}
echo "</urlset>";
?>
- Code: Tout sélectionner
RewriteRule ^sitemap\.xml$ /monsitemap.php [QSA,L]
ç'a l'air de bien fonctionner maintenant :
/** URL editée par Jaunalgi - sitemap hors ligne **/
Petit bémol : je ne veux pas indexer index.html pour éviter le conflit avec le domaine seul.
Dernière édition par Jaunalgi le Mar Sep 19, 2006 11:54, édité 1 fois.
- treivilo
- WRInaute discret

- Messages: 97
- Inscription: 21 Sep 2004
Bonjour à toutes et à tous,
à ce propos, j'ai trouvé un petit site bien pratique :
http://www.autositemap.com
Il permet, en affichant un marqueur sur les pages d'un site, de générer dynamiquement le sitemap d'un site.
Le principe est simple, chaque requête à l'image en question contient (du moins pour la majorité des personnes visitant le site) le referer de cette image. Donc, il ne reste plus qu'à extraire d'une base de données tous les réfèrants, de formater l'affichage et hop
Olivier
à ce propos, j'ai trouvé un petit site bien pratique :
http://www.autositemap.com
Il permet, en affichant un marqueur sur les pages d'un site, de générer dynamiquement le sitemap d'un site.
Le principe est simple, chaque requête à l'image en question contient (du moins pour la majorité des personnes visitant le site) le referer de cette image. Donc, il ne reste plus qu'à extraire d'une base de données tous les réfèrants, de formater l'affichage et hop
Olivier
-

fandecine - Modérateur

- Messages: 2047
- Inscription: 2 Avr 2005
Jaunalgi a écrit:Petit bémol : je ne veux pas indexer index.html pour éviter le conflit avec le domaine seul.
d'ou l'interet de ce bout de code:
- Code: Tout sélectionner
if($_SERVER['REQUEST_URI']=="/") $filtrePage="/index.html";else $filtrePage=$_SERVER['REQUEST_URI']; //on evite de dupliquer domaine.com et domaine.com/index.html
-

khirani - Nouveau WRInaute

- Messages: 21
- Inscription: 3 Aoû 2004
SiteMap google
Salut Fandcine
je suis trés intéréssé par ce script, par contre je sais comment l'installer :
le 1er bloc, ou ?
2em ou ?
les deux blocs de codes dans le meme page sitemap.php ?
j'ai essayé, mais une erreur : (j pense problem de chemin )
Parse error: parse error, unexpected T_IF in /home/besthoteu/www/spain/monsitemap.php on line 5
Merci par avance
je suis trés intéréssé par ce script, par contre je sais comment l'installer :
le 1er bloc, ou ?
2em ou ?
les deux blocs de codes dans le meme page sitemap.php ?
j'ai essayé, mais une erreur : (j pense problem de chemin )
Parse error: parse error, unexpected T_IF in /home/besthoteu/www/spain/monsitemap.php on line 5
Merci par avance
-

fandecine - Modérateur

- Messages: 2047
- Inscription: 2 Avr 2005
le premier bloc de code doit être inserré dans toutes les pages du site.
Le second est un script php (fichier sitemap.php) permettant de générer les données du fichier sitemap. Si on inserre le troisième le bloc de code dans le fichier htacces, l'appel de sitemap.xml affichera le fichier sitemap!
voila!
Le second est un script php (fichier sitemap.php) permettant de générer les données du fichier sitemap. Si on inserre le troisième le bloc de code dans le fichier htacces, l'appel de sitemap.xml affichera le fichier sitemap!
voila!
-

jyl - Nouveau WRInaute

- Messages: 19
- Inscription: 30 Jan 2005
Bjr,
Merci beaucoup pour ce très pratique script fandecine !
Après quelques tests cela me génere bien monsitemap.php
Par contre comme je lisais la notice de google et voyais les autres tags : du syle <changefreq> et <priority>, ceux si sont optionnels d'accord, mais je me demandais si cela était vraiment nécessaire de les créer ???
Si cela apportais quelques choses pour le référencement, la rapidité de ref, etc.. ?
Merci d'avance
JY
PS: je modifie mon post pour ajouter les quelques lignes de code pour ces 2 tags:
Et plus qu'a executer http://www.votresite.com/monsitemap.php
Plus qu'a faire une fonction de tout ça, pour faire plus beau
Merci beaucoup pour ce très pratique script fandecine !
Après quelques tests cela me génere bien monsitemap.php
Par contre comme je lisais la notice de google et voyais les autres tags : du syle <changefreq> et <priority>, ceux si sont optionnels d'accord, mais je me demandais si cela était vraiment nécessaire de les créer ???
Si cela apportais quelques choses pour le référencement, la rapidité de ref, etc.. ?
Merci d'avance
JY
PS: je modifie mon post pour ajouter les quelques lignes de code pour ces 2 tags:
- Code: Tout sélectionner
// la fréquence de renouvellement de la page
$changefreq=array(0=>'always',
1=>'hourly',
2=>'daily',
3=>'weekly',
4=>'monthly',
5=>'yearly',
6=>'never');
// 0.0 to 1.0, The default priority of a page is 0.5
$priority='0.4';
$sitemapsContent="<url>\n\t<loc>http://www.votresite.com".$filtrePage."</loc>\n\t<lastmod>".date('Y-m-d')."T".date('H:m:s+00:00')."</lastmod>\n<changefreq>".$changefreq[2]."</changefreq>\n<priority>".$priority."</priority>\n</url>\n"; //on formate les infos pour le XML
Et plus qu'a executer http://www.votresite.com/monsitemap.php
Plus qu'a faire une fonction de tout ça, pour faire plus beau
-

fandecine - Modérateur

- Messages: 2047
- Inscription: 2 Avr 2005
jyl a écrit:Par contre comme je lisais la notice de google et voyais les autres tags : du syle <changefreq> et <priority>, ceux si sont optionnels d'accord, mais je me demandais si cela était vraiment nécessaire de les créer ???
Personnellement, je n'ais pas assez de recul sur l'utilisation de GGSitemap pour dire si ces tags apportent quelquechose ou pas. J'ai choisi la simplicité en les ignorant... pour l'instant.
Formation recommandée sur ce thème :
Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [script] Génération Google sitemap dynamique sans BDD
- Génération de sitemap dynamique
- script generation automatique index sitemap
- Génération dynamique de graphes sur internet
- Génération dynamique de la balise meta avec WordPress
- Question sur la génération de titre de page dynamique
- Génération du sitemap
- Erreur à la génération du sitemap
- Problème de génération sitemap
- probelem de generation de GG sitemap
Consultez la description détaillée des produits ou services de Google suivants : Google Sitemaps
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
