|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
fandecine Modérateur

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Mer Juin 29, 2005 19:39 Sujet du message: [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:
| 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="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: |
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 15:26; édité 1 fois |
|
| |
|
 |
netsba WRInaute occasionnel

Inscrit le: 17 Nov 2004 Messages: 220
|
Posté le : Jeu Juin 30, 2005 0:54 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
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

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Jeu Juin 30, 2005 8:30 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| 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 impliqué

Inscrit le: 11 Aoû 2004 Messages: 255
|
Posté le : Jeu Juin 30, 2005 15:18 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
Il y a 2 erreurs de progra dans ton code fandecine :
| 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(!==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: |
<?
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

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Jeu Juin 30, 2005 15:29 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| Jaunalgi a écrit: |
Il y a 2 erreurs de progra dans ton code fandecine :
A enlever les deux fois
Pas encore testé le script. |
OOPS! ça m'apprendra!
J'ai édité le post pour le corriger!
il y en a au moins un qui suit!  |
|
| |
|
 |
Jaunalgi WRInaute impliqué

Inscrit le: 11 Aoû 2004 Messages: 255
|
Posté le : Jeu Juin 30, 2005 15:32 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
J'ai testé le script après avoir modifié les erreurs que je t'ai donné plus haut.
Voici le script après correction
| 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("//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: |
<?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: |
| 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 12:54; édité 1 fois |
|
| |
|
 |
fuleran Nouveau WRInaute
Inscrit le: 10 Fév 2004 Messages: 43
|
Posté le : Jeu Juin 30, 2005 17:17 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| Si je ne me trompe pas, ton fichier xml contient plusieurs fois la même page (en particulier ta page d'accueil). |
|
| |
|
 |
Jaunalgi WRInaute impliqué

Inscrit le: 11 Aoû 2004 Messages: 255
|
Posté le : Jeu Juin 30, 2005 17:37 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
Ah oui, bien vu.
C'est bizarre ça 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  |
|
| |
|
 |
treivilo WRInaute discret

Inscrit le: 21 Sep 2004 Messages: 97 Localisation: Rennes, Bretagne
|
Posté le : Ven Juil 01, 2005 7:51 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
Bonjour à toutes et à tous,
à ce propos, j'ai trouvé un petit site bien pratique :
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

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Ven Juil 01, 2005 17:17 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| 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: |
| 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
Inscrit le: 29 Mai 2005 Messages: 44
|
Posté le : Sam Juil 02, 2005 23:49 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| Merci pour ce script, très pratique :p |
|
| |
|
 |
khirani Nouveau WRInaute
Inscrit le: 03 Aoû 2004 Messages: 21 Localisation: Paris
|
Posté le : Mar Juil 12, 2005 17:36 Sujet du message: 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 |
|
| |
|
 |
fandecine Modérateur

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Mer Juil 13, 2005 15:18 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
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!  |
|
| |
|
 |
jyl Nouveau WRInaute
Inscrit le: 30 Jan 2005 Messages: 19 Localisation: Près du PC dans le 12
|
Posté le : Mer Juil 20, 2005 18:49 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
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: |
// 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

Inscrit le: 02 Avr 2005 Messages: 1401 Localisation: Béarn
|
Posté le : Jeu Juil 21, 2005 0:16 Sujet du message: [script] Génération Google sitemap dynamique sans BDD |
|
|
| 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. |
|
| |
|
 |
| |
|
|