IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Création d'un sitemap


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut Création d'un sitemap
    Bonjour tout le monde,

    J'ai quasi fini la réalisation de mon site avec ZF.
    Je me pose maintenant la question de savoir comment réaliser un site map pour Google.

    Voici mes différentes interrogations :

    1. Que dois-je ajouter dans le robot.txt ?
    2. Quel est le format à utiliser (xml vs html) ?
    3. Quel est la meilleure structure à utiliser, auriez-vous un exemple ?
    4. Vu que le site est hautement dynamique, dois-je générer tous les liens ?
    5. Faites-vous un controller spécifique pour le sitemap ?

    Voilà, en gros je ne sais pas par où commencer. Toute aide sera la bienvenue

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Un sitemap google n'est qu'un bête fichier XML.

    Personnelement j'ai créé un fichier googlesitemap.xml à la racine de mon site. À chaque ajout, modification d'une des pages de mon site celui-ci est regénéré.


    Le fait que ton site soit dynamique est un avantage indéniable, cela va te permettre de générer ce fichier dynamiquement. Il te suffit de parcourir les pages de ton site (je suppose qu'elles sont en DB), et, pour chacune de ces pages, créer la balise <url/> qui va bien.

    Pour le générer rien de plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $file = fopen('googlesitemap.xml','w+');
    $buffer = '<?xml version="1.0" encoding="UTF-8"?>';
    $buffer .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">';
    $sql = mysql_query("SELECT * FROM pages");
    while($page = mysql_fetch_array($sql)){
        $buffer .= '<url>
                 <loc>'.$page['url'].'</loc>
                 <changefreq>monthly</changefreq>
              </url>';
    }
    $buffer .= '</urlset>';
    fwrite($file,$buffer);
    fclose($file);
    Normalement tu n'as rien à configurer dans ton fichier robots à part si tu as mis noindex nofollow bien sur Aussi, le fichier sitemap à fournir est au format XML. Il n'a pas à être relayé dans ton site, tu peux fournir directement le fichier ou l'url du fichier à Google dans les outils pour webmaster.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Bonjour ThomasR,

    Merci pour ta réponse, je commence à y voir un peu plus clair.
    A la base, je voulais mettre un controller avec un view spécifique qui génèraient le sitemap à chaque appel, pour toujours avoir la version la plus à jour. Mais maintenant, cela ne semble plus être possible vu que le fichier doit s'appeler sitemap.xml ....

    La dernière chose que j'arrive pas à comprendre, c'est que pour certains site Google crée une sorte de mini-arborescence. Je pensais que cela venait du sitemap, mais je ne vois pas comment définir la structure du site dans le sitemap.

    Sinon dans mes recherche sur le net, j'ai trouvé d'autres balise optionelle :

    <priority>0.5</priority>
    <lastmod>2008-02-05T10:22:56+00:00</lastmod>
    <changefreq>daily</changefreq>
    Je comprends leurs significations, mise à part pour priority. Je ne vois pas ce que ça influe ...

    Encore merci,
    Olivier

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    un view spécifique qui génèraient le sitemap à chaque appel, pour toujours avoir la version la plus à jour. Mais maintenant, cela ne semble plus être possible vu que le fichier doit s'appeler sitemap.xml ....
    Le nom du fichier ne détermine en rien son contenu Tu peux le nommer googlesitemap.php et en faire un document XML. Dans ce cas tu ne pourras pas fournir à Google ton fichier sitemap car ce dernier contient du PHP, mais tu devras lui fournir l'url du sitemap (www.monsite.com/sitemap.php).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Content-Type: text/xml');
    Les liens que tu peux voir en dessous de certains sites sont des liens entièrement générés par google, tu n'auras jamais la main dessus. Lorsque google te met en première place pour une recherche, il peut attributer à ton site des "liens de site" ou "sitelinks", ces liens seront les pages les plus pertinentes de ton site.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <priority>0.5</priority>
    Priority est comme son nom l'indique, un indice de priorité, par exemple la page www.monsite.com/mentions-legales est moins prioritaire que www.monsite.com/produits. De ce fait, le moteur de recherche, lorsqu'il devra trancher entre deux de tes pages, le fera en fonction de leur priorité respective.

    Si cette balise n'est pas précisée, une priorité de 0,5 sera affectée à l'url.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    ThomasR,

    Merci pour toutes ces précisions.
    A la base, je pensais que le fichier devais obligatoirement s'appler sitemap.xml pour que le robot de google le retrouve.
    Si ce n'est pas le cas, comment renseignes-tu le nom du fichier au robot de google ?

    Sinon, après avoir lu tes différentes réponses, je pensais mettre en place le système suivant en ZF MVC (dis moi ce que tu en penses) :

    1. Créer mon SitemapController avec son action et sa vue index.phtml
    2. Créer une route static spécifique à ce controller
    3. Mettre une cache ouput dessus (de 1 jour)

    Voici un peu de code pour illiustrer ceci :

    La route dans le config.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    routes.sitemap.type = "Zend_Controller_Router_Route_Static"
    routes.sitemap.route = "sitemap.xml"
    routes.sitemap.defaults.module = "default"
    routes.sitemap.defaults.controller = "sitemap"
    routes.sitemap.defaults.action = "index"
    ...
    Dans le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    $cache = Zend_Cache::factory('Output', 'File', $config->cache->frontend->toArray(), $config->cache->backend->toArray());
    Zend_Registry::set('cache', $cache);
    Le controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class SitemapController extends Zend_Controller_Action {
     
    public function indexAction() {
      ...
      if(!Zend_Registry::get('cache')->test('sitemap') {
          $this->view->pages = $db->getPages();
      }
    }
    La view
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <? if(!Zend_Registry::get('cache')->start('sitemap')) : // Starts caching ?>
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <? foreach($this->pages as $page) : ?>
    <url>
      <loc><?= $page['url'] ?></loc>
      <lastmod><?= $page['modificationDate'] ?></lastmod>
      <changefreq>Daily</changefreq>
      <priority><?= $page['priority'] ?></priority>
    </url>
    <? endforeach ?>
    </urlset>
    <? Zend_Registry::get('cache')->end() ?>
    <? endif ?>
    PS: Ceci est évident un code simplifier à l'extrême comparé au vrai projet en cours . C'est d'ailleur pour cela que j'utilise la cache ouput et pas la cache page.

    Ah oui, au passage, je me posais encore une question...
    Est-ce que vaut la peine (en terme de référencement), de sauver différentes urls qui ont la même destination, exemple :

    http://www.monsite.com
    http://www.monsite.com/index
    http://www.monsite.com/index/index

    ???

    Même question pour tous les résultats de recherche. En effet, mon projet dispose d'un moteur de recherche assez avancé et toutes les combinaisons des diffèrents critères du GET mènent à plusieurs millers d'urls possibles.
    En gros, je ne désire pas vraiment que ces pages de recherches soient indexées sauf si ça améliore le référencement global site (ce que je ne sais pas) ...

    Désolé, pour toutes ces questions, mais tout ça est un peu nouveau pour moi.

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Pour les moteurs de recherche c'est très confusant d'avoir plusieurs URL pour le même contenu. De plus, cela peut-être considéré comme du spamDexing.

    Concernant ton moteur de recherche, il ne doit pas être indéxé par les moteurs de recherche, pour la seule et unique raison qu'un internaute n'a pas à se retrouver dans un second moteur de recherche après avoir recherché une entrée dans un premier moteur de recherche.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    C'est bien ce que je pensais.
    Sinon, j'ai mis en place la solution que décrite 2 messages plus haut mais il me reste un dernier soucis plus général avec le content-type de la view.
    J'ai donc créer une discussion spécifique à ce problème ici
    Pourrais-tu jeter un oeil stp, ça m'aiderait beaucoup.

    Encore merci pour tout ces précieux conseils,
    Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création Sitemap architecture MVC
    Par Reno69 dans le forum Référencement
    Réponses: 4
    Dernier message: 18/12/2014, 14h43
  2. Création et optimisation d'un google Sitemap
    Par BrYs dans le forum Référencement
    Réponses: 0
    Dernier message: 07/11/2006, 10h05
  3. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo