[script] Génération Google sitemap dynamique sans BDD

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

[script] Génération Google sitemap dynamique sans BDD

Message le Mer Juin 29, 2005 18:39

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:

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! :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....
Dernière édition par fandecine le Jeu Juin 30, 2005 14:26, édité 1 fois.


netsba
WRInaute discret
WRInaute discret
 
Messages: 220
Inscription: 17 Nov 2004

Message le Mer Juin 29, 2005 23:54

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...


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Jeu Juin 30, 2005 7:30

netsba a écrit:le 1er script je le place sur toutes mes pages

Uniquement dans les pages que tu veux inclure au fichier sitemap...
netsba a écrit:le 2emme je change cheminabsolut en /home/www...
oui

Jaunalgi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 303
Inscription: 11 Aoû 2004

Message le Jeu Juin 30, 2005 14:18

Il y a 2 erreurs de progra dans ton code fandecine :

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(![color=red]([/color]file_exists("/cheminabsolut/sitemaps/  ".$fichierSitemaps)!==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 :wink:
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>";
?>


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Jeu Juin 30, 2005 14:29

Jaunalgi a écrit:Il y a 2 erreurs de progra dans ton code fandecine :
A enlever les deux fois :wink:
Pas encore testé le script.


OOPS! :oops: ça m'apprendra!
J'ai édité le post pour le corriger! :D

il y en a au moins un qui suit! :wink:

Jaunalgi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 303
Inscription: 11 Aoû 2004

Message le Jeu Juin 30, 2005 14:32

J'ai testé le script après avoir modifié les erreurs que je t'ai donné plus haut.

Voici le script après correction :wink:
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.

fuleran
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 43
Inscription: 10 Fév 2004

Message le Jeu Juin 30, 2005 16:17

Si je ne me trompe pas, ton fichier xml contient plusieurs fois la même page (en particulier ta page d'accueil).

Jaunalgi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 303
Inscription: 11 Aoû 2004

Message le Jeu Juin 30, 2005 16:37

Ah oui, bien vu.

C'est bizarre ça :o J'ai ptêt fait une erreur de paramétrage alors...

----------------
Edit : j'avais mis une ligne en commentaire et du coup, la page d'accueil revenait sans cesse, bien vu fuleran :wink:

treivilo
WRInaute discret
WRInaute discret
 
Messages: 97
Inscription: 21 Sep 2004

Message le Ven Juil 01, 2005 6:51

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


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Ven Juil 01, 2005 16:17

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: :wink:
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


silius
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 29 Mai 2005

Message le Sam Juil 02, 2005 22:49

Merci pour ce script, très pratique :p


khirani
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 21
Inscription: 3 Aoû 2004

SiteMap google

Message le Mar Juil 12, 2005 16:36

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


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Mer Juil 13, 2005 14:18

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! :D


jyl
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 19
Inscription: 30 Jan 2005

Message le Mer Juil 20, 2005 17:49

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:


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 :wink:


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Mer Juil 20, 2005 23:16

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.

[script] Génération Google sitemap dynamique sans BDD

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités