Créer un sitemap en php

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Colansi
Nouveau WRInaute
 
Messages: 3
Inscription: Jeu Nov 13, 2008 20:17

Créer un sitemap en php

Message le Sam Nov 15, 2008 15:50

Bonjour,

Je souhaiterai créer un sitemap pour google en php. Seulement, j'ai lu que le sitemap devait être en XML. Hors, si je fais un sitemap.php, ça ne fonctionnera pas ?

Et si je fais un sitemap.xml, je ne pourrais pas faire un fichier dynamique qui se met à jour à chaque interrogation (comme un .php par exemple)

Bref, je ne comprend pas comment faire un fichier xml dynamique en utilsant php ?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Sam Nov 15, 2008 16:00

Tu n'y es pas. En fait on utilise les deux.

Un sitemap.xml lisible seulement par des robots comme Google qui propose son ajout dans ses outils webmasters.

Une page normale (exemple monsite.php) reprenant toutes les catégories et liens principaux de ton site. Il permet d'être crawlé par les robots et permet aussi au visiteur de s'y retrouver.

Les deux peuvent être générés en php mais n'ont pas la même utilité ni la même finalité. N'oublie pas qu'il est possible d'appeler une page X.php X.xml grâce aux règles de réécritures ;) Et puis, tu as juste à changer les headers en php pour faire comme si ta page X.php était un fichier xml !


blman
WRInaute accro
WRInaute accro
 
Messages: 2915
Inscription: Ven Sep 05, 2003 10:46

Message le Sam Nov 15, 2008 17:13

A mon avis, c'est s'embêter pour pas grand chose... (sauf si tu a des pages inaccessibles pour les robots)


Colansi
Nouveau WRInaute
 
Messages: 3
Inscription: Jeu Nov 13, 2008 20:17

Message le Sam Nov 15, 2008 17:18

Merci, la réécriture d'url était la brique qui manquée à mon raisonnement.

Pour les générations futures que Dieu Google enverra sur ce post. Si ça peut les aider un peu :)


Le script php pour générer le sitemap dynamique :
fct_general.php contient la connexion à la base MySQL
Code: Tout sélectionner
<?php
require_once("fct_general.php");

header("Content-Type: text/xml;charset=utf-8");

echo '<?xml version="1.0" encoding="utf-8"?>';
?>

<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">

<?php
// Charge les actu pour créer le tableau
$vChaineSQL="SELECT actu.id_actu, actu.motsCles FROM actu ORDER BY id_actu DESC";
$vResult=mysql_query($vChaineSQL);
while ($row=mysql_fetch_array($vResult)) {
    $urlActu=$_SERVER["HTTP_HOST"]."/actualite-".$row["id_actu"]."-".str_replace(" ","_",$row["motsCles"]).".html";
?>

   <url>
      <loc><?php echo $urlActu; ?></loc>
   </url> 

<?php } ?>

</urlset>


L'extrait du .haccess pour réécrire sitemap.php en sitemap.xml :

Code: Tout sélectionner

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^sitemap.xml /sitemap.php  [NC,L]


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 470
Inscription: Dim Avr 15, 2007 17:14

Message le Sam Nov 15, 2008 19:04

Salut,
pour ma part, comme toutes les pages de mon site passent par index.php, j'ai ajouté un code qui ajoute systématiquement toutes les urls qui ne provoquent pas d'erreur 404 dans la db.

Ca se présente comme ça (à adapter bien entendu) :
Code: Tout sélectionner
// Gestion du SITEMAP
if( !isset($NOSITEMAP) AND !ereg('\?', $_SERVER['REQUEST_URI']) AND !ereg('#', $_SERVER['REQUEST_URI']) ) {
   $url_ = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   $title_ = str_replace(' - '.$_CONFIG['name'], '', $_HEAD['title']);
   $title_ = mysql_escape_string($title_);;
   $module_ = ucfirst(module_name());
   
   // On vérifie que le domaine est correct
   if(ereg(SITE_URL, $url_)) {
      $url_ = str_replace(SITE_URL, '', $url_);
      
      $sql = "UPDATE sitemap SET title='{$title_}', counter=counter+1 WHERE url='{$url_}'";
      db_query($sql);
      
      if(mysql_affected_rows()==0) {
         $timestamp_ = time();
         
         $sql = "
         INSERT INTO sitemap(url, title, module, counter, timestamp)
         VALUES('{$url_}', '{$title_}', '{$module_}', '1', '{$timestamp_}')
         ";
         db_query($sql);
      }
   }
}



et le fichier sitemap.php
Code: Tout sélectionner
<?php

# Génère le fichier sitemap.xml

// Includes
include('db.inc.php');
include('functions.inc.php');

// Connexion à la DB
db_connect();

// On récupère SITE_URL
query_config();

// En-tete http
header('Content-Type: text/xml');

// Début du fichier
echo <<< ECHO
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
ECHO;

// Récupération des data
$sql = 'SELECT * FROM sitemap ORDER BY url';
$result = db_query($sql);

while( $element = mysql_fetch_assoc($result) ) {
   if ( !ereg('\./', $element['url']) AND !ereg('index\.php', $element['url']) AND !ereg('#', $element['url']) ) {
      $url = SITE_URL . $element['url'];
      $lastmod = date('Y-m-d', $element['timestamp']);
      echo "
   <url>
      <loc>{$url}</loc>
      <lastmod>{$lastmod}</lastmod>
   </url>
   ";
   }
}

// Fermeture de la DB
db_close();

?>
</urlset>


Si ça peut aider ;)


Rod la Kox
WRInaute accro
WRInaute accro
 
Messages: 1812
Inscription: Mar Juin 24, 2008 15:03

Message le Sam Nov 15, 2008 20:56

Ouais, enfin, tout sitemap est spécifique à chaque site. ;-)

un type qui sait faire une requête vers sa bdd et mettre en forme pour le format attendu par GG obtiendra un joli sitemap.

Pas compliqué en somme.
Le truc important, comme pour tout flux ou page, c'est de ne pas se planter dans l'encodage.


WebzineMusik
WRInaute discret
WRInaute discret
 
Messages: 51
Inscription: Sam Avr 19, 2008 7:21

Message le Mer Nov 19, 2008 18:41

Bonjour à tous,

Je suis d'accord que tout site doit posséder son propre sitemap.
L'idéal est de le créer en fichier compressé, Google aime le Gz



:idea:


Rod la Kox
WRInaute accro
WRInaute accro
 
Messages: 1812
Inscription: Mar Juin 24, 2008 15:03

Message le Mer Nov 19, 2008 21:18

Mouais, mais ça avance à quoi ?

10k ou 200ko... sur les hébergeur d'aujourd'hui...


WebzineMusik
WRInaute discret
WRInaute discret
 
Messages: 51
Inscription: Sam Avr 19, 2008 7:21

Message le Mer Nov 19, 2008 22:23

Un fichier XML est automatiquement indexé par Google à moins de l'interdire,
donc le contenu est visible ensuite depuis la toile.

Un fichier compressé restera invisible.

Ce n'est qu'une idée parmi tant d'autre :idea:

lyonist
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 184
Inscription: Mar Aoû 05, 2008 19:32

Message le Sam Déc 06, 2008 19:09

merci Colansi , ça ma était utile.

Recommended


WebzineMusik
WRInaute discret
WRInaute discret
 
Messages: 51
Inscription: Sam Avr 19, 2008 7:21

Message le Sam Déc 06, 2008 19:22

Euh... ne doit-on pas ajouter quelques balises optionnelles ?

- <url>
<loc>http://www.mon-site-a-moi.fr/agenda.html</loc>
<lastmod>2008-12-06</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>


screuscreu
WRInaute passionné
WRInaute passionné
 
Messages: 911
Inscription: Lun Jan 14, 2008 12:14

Message le Dim Déc 14, 2008 3:50

WebzineMusik a écrit:Euh... ne doit-on pas ajouter quelques balises optionnelles ?

- <url>
<loc>http://www.mon-site-a-moi.fr/agenda.html</loc>
<lastmod>2008-12-06</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>


Pas de réponses résponse de pro ?

ayor
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 154
Inscription: Mer Oct 29, 2008 22:46

Message le Dim Déc 14, 2008 11:01

WebzineMusik a écrit:Euh... ne doit-on pas ajouter quelques balises optionnelles ?

- <url>
<loc>http://www.mon-site-a-moi.fr/agenda.html</loc>
<lastmod>2008-12-06</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>


tu l'as dit, c'est optionnel :)

pour ce qui est du xml vs php, j'envoie tout à google dans un sitemap.php, et il aime très bien :)

rien n'interdit un fichier.php à renvoyer du xml, tant que le header est bien positionné :
Code: Tout sélectionner
header("Content-Type: text/xml;charset=utf-8");
echo '<?xml version="1.0" encoding="utf-8"?>';


donc, la regle de réécriture sitemap.php => sitemap.xml n'apporte rien


screuscreu
WRInaute passionné
WRInaute passionné
 
Messages: 911
Inscription: Lun Jan 14, 2008 12:14

Message le Dim Déc 14, 2008 11:06

ayor a écrit:donc, la regle de réécriture sitemap.php => sitemap.xml n'apporte rien


Elle apporte au moins à yahoo, msn ... et autres moteurs de recherche !

Sinon on peut mettre ça dans le robots.txt
Code: Tout sélectionner
Sitemap: http://www.example.com/sitemap.xml

Mais je sais pas si un php sera apprécié par les autres

ayor
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 154
Inscription: Mer Oct 29, 2008 22:46

Message le Dim Déc 14, 2008 11:12

screuscreu a écrit:
ayor a écrit:donc, la regle de réécriture sitemap.php => sitemap.xml n'apporte rien


Elle apporte au moins à yahoo, msn ... et autres moteurs de recherche !


c'est-à-dire : tu peux développer ?

Créer un sitemap en php

Formation recommandée sur ce thème :

Formation Référencement 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 :

Consultez la description détaillée des produits ou services de Google suivants : Google Sitemaps

  • Liste de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.


Qui est en ligne

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