1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

Créer un sitemap en php

Discussion dans 'Crawl et indexation Google, sitemaps' créé par Colansi, 15 Novembre 2008.

  1. Colansi
    Colansi Nouveau WRInaute
    Inscrit:
    13 Novembre 2008
    Messages:
    3
    J'aime reçus:
    0
    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 ?
     
  2. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 249
    J'aime reçus:
    0
    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 !
     
  3. blman
    blman WRInaute accro
    Inscrit:
    5 Septembre 2003
    Messages:
    2 740
    J'aime reçus:
    1
    A mon avis, c'est s'embêter pour pas grand chose... (sauf si tu a des pages inaccessibles pour les robots)
     
  4. Colansi
    Colansi Nouveau WRInaute
    Inscrit:
    13 Novembre 2008
    Messages:
    3
    J'aime reçus:
    0
    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:
    <?php
    require_once("fct_general.php");
    
    header("Content-Type: text/xml;charset=utf-8");
    
    echo '<?xml version="1.0" encoding="utf-8"?>';
    ?>
    
    <urlset xmlns="https://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:
    
    Options +FollowSymlinks
    RewriteEngine on
    
    RewriteRule ^sitemap.xml /sitemap.php  [NC,L]
    
     
  5. seebz
    seebz WRInaute impliqué
    Inscrit:
    15 Avril 2007
    Messages:
    728
    J'aime reçus:
    0
    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:
    // 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:
    <?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 ;)
     
  6. Rod la Kox
    Rod la Kox WRInaute accro
    Inscrit:
    24 Juin 2008
    Messages:
    2 803
    J'aime reçus:
    0
    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.
     
  7. WebzineMusik
    WebzineMusik WRInaute discret
    Inscrit:
    19 Avril 2008
    Messages:
    110
    J'aime reçus:
    0
    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:
     
  8. Rod la Kox
    Rod la Kox WRInaute accro
    Inscrit:
    24 Juin 2008
    Messages:
    2 803
    J'aime reçus:
    0
    Mouais, mais ça avance à quoi ?

    10k ou 200ko... sur les hébergeur d'aujourd'hui...
     
  9. WebzineMusik
    WebzineMusik WRInaute discret
    Inscrit:
    19 Avril 2008
    Messages:
    110
    J'aime reçus:
    0
    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:
     
  10. lyonist
    lyonist WRInaute discret
    Inscrit:
    5 Août 2008
    Messages:
    154
    J'aime reçus:
    0
    merci Colansi , ça ma était utile.

    Recommended
     
  11. WebzineMusik
    WebzineMusik WRInaute discret
    Inscrit:
    19 Avril 2008
    Messages:
    110
    J'aime reçus:
    0
    Euh... ne doit-on pas ajouter quelques balises optionnelles ?

     
  12. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    Pas de réponses résponse de pro ?
     
  13. ayor
    ayor WRInaute discret
    Inscrit:
    29 Octobre 2008
    Messages:
    187
    J'aime reçus:
    0
    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:
    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
     
  14. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    Elle apporte au moins à yahoo, msn ... et autres moteurs de recherche !

    Sinon on peut mettre ça dans le robots.txt
    Code:
    Sitemap: http://www.example.com/sitemap.xml
    Mais je sais pas si un php sera apprécié par les autres
     
  15. ayor
    ayor WRInaute discret
    Inscrit:
    29 Octobre 2008
    Messages:
    187
    J'aime reçus:
    0
    c'est-à-dire : tu peux développer ?
     
  16. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    701
    J'aime reçus:
    0
    Je veux dire que c'est bien beau de mettre un .php en sitemap mais il faut aussi le soumettre à yahoo et msn et tous les autres.

    Je disais juste que je sais pas si les autres vont apprécier le PHP dans l'extension, c'est tout !
     
  17. ThT12
    ThT12 Nouveau WRInaute
    Inscrit:
    9 Janvier 2009
    Messages:
    2
    J'aime reçus:
    0
    Bonjour à tous !

    Désolé de réouvrir un post fermer depuis un mois, mais j'essaye désespérément de faire un sitemap en php, en vain.

    En faite, j'ai réutilisé les bouts de code présenté plus haut dans le post mais il y a toujours une erreur :

    j'ai creer ma page sitemap.php
    voici ce qu'il y a dedans :

    Code:
    <?php
    header("Content-Type: text/xml;charset=utf-8");
    echo '<?xml version="1.0" encoding="utf-8"?>'; 
    ?>
    
    <urlset xmlns="https://www.google.com/schemas/sitemap/0.84"> 
    
    <?php 
    
    ... 
    
    ?>
    </urlset>
    
    Voilà, l'erreur qu'il me retourne quand j'essaye d'accèder à la page :


    les lignes 3 et 4 correspondants respectivement à "<?php " et "header("Content-Type: text/xml;charset=utf-8");"

    Il y a donc quelque chose que je fait mal, mais quoi ?
    J'ai beau chercher sur internet, peu de site parle de cela !
    Quelqu'un pourrait m'aider ?

    Merci beaucoup et bonne soirée !
    ThT12
     
  18. ayor
    ayor WRInaute discret
    Inscrit:
    29 Octobre 2008
    Messages:
    187
    J'aime reçus:
    0
    ton éditeur n'aurait pas rajouter un caractères utf8 invisible avant le '< ?' ?

    utilise un éditeur hexa pour le savoir et le supprimer ;)
     
  19. ThT12
    ThT12 Nouveau WRInaute
    Inscrit:
    9 Janvier 2009
    Messages:
    2
    J'aime reçus:
    0
    Bonjour ayor,

    Merci pour ta réponse, il semblerais que ça soit effectivement ça! Enfin plus précisément ce n'était pas l'éditeur, mais moi qui avait fait un saut à la ligne au début de la page... Ce qu'il n'apprécie gère à priori (ce que je ne savais pas) !

    Cela marche niquel maintenant !

    Merci encore et désolé pour ce petit problème qui n'en était pas vraiment un!

    :? Boulet inside ! :?

    Bonne après midi!
    :D

    ThT12
     
  20. ayor
    ayor WRInaute discret
    Inscrit:
    29 Octobre 2008
    Messages:
    187
    J'aime reçus:
    0
    content d'avoir pu t'aider à résoudre ton problème ;)
     
Chargement...
Similar Threads - Créer sitemap php Forum Date
Comment créer un sitemap pas à pas ? Débuter en référencement 12 Janvier 2019
Créer un sitemap spécial désindexation Crawl et indexation Google, sitemaps 6 Juillet 2014
Créer un sitemap video avec des videos embed YouTube, Google Images et Google Maps 12 Mai 2011
Impossible de créer un sitemap Crawl et indexation Google, sitemaps 23 Octobre 2010
Quel logiciel simple pour créer un sitemap (+ tutoriel) ? Débuter en référencement 10 Février 2009
Créer une redirection 301 URL Rewriting et .htaccess 5 Septembre 2019
lien vers rien ou page vide à créer Rédaction web et référencement 5 Juillet 2019
Créer un nom d’utilisateur de Page Facebook @ Facebook 13 Juin 2019
Créer un nouveau compte Google ads après avoir été suspendu AdWords 27 Mars 2019
À quel moment Google décide de "créer" une position 0 ? Référencement Google 26 Mars 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice