2009-08-23 11 views
9

Je développe une webapp en utilisant codeigniter (mvc) et php. Je me demandais comment créer un sitemap pour les moteurs de recherche lorsque mon contact est dynamique? Existe-t-il des bonnes pratiques ou y a-t-il un moyen d'automatiser le processus? Je demande parce que le contenu sera constamment et rapidement ajouté, donc je voudrais que le sitemap soit récent. MerciPlan du site pour le contenu dynamique?

Mise à jour: pour aider à répondre à ma question, le type de site que je crée est un site public de type blog où les utilisateurs publient des articles.

Mise à jour2: Juste pour préciser ma confusion: je ne comprends peut-être pas exactement comment un sitemap est structuré. Sur un site tel que stackoverflow, par exemple, lorsque les utilisateurs ajoutent de nouvelles questions (et donc que de nouvelles pages sont créées), le sitemap change-t-il et doit-il être soumis à nouveau? A quel point est-ce important pour un site comme celui-ci d'avoir même un sitemap?

Répondre

0

Selon le type de site que vous créez, vous pouvez le faire de plusieurs façons. Par exemple si vous étiez en train de créer un site d'actualités.

Vous pouvez avoir une seule page avec des liens vers le permalien de chaque article de nouvelles. Si vous pouviez détailler le type de site/son contenu, nous pourrions mieux vous aider.

+0

Tant que vous fournissez un moyen d'atteindre chaque page par navigation sur le site d'une manière cohérente, vous devriez être bien. Ou souhaitez-vous prendre en charge les sitemaps Google? – chotchki

2

J'ai une situation similaire à la vôtre, sauf que je développe dans Zend Framework et Doctrine au lieu de Code Igniter.

La façon dont nous avons résolu ce problème consistait à créer un modèle de sitemap qui agit comme un ensemble imbriqué de la doctrine. Il s'agit simplement de quelques champs, comme un identifiant, un parent_id, un titre, un uri, créé, mis à jour. Vous pouvez ajouter plus de champs si vous en avez besoin, mais c'est le principe de base. Nous utilisons ensuite Zend_Navigation pour rendre cet arbre dans un menu pour le site. Zend_Navigation dispose également d'une méthode d'aide pour générer automatiquement un sitemap XML. Nous avons donc un contrôleur et une vue configurés pour rendre ce document XML. Ensuite, nous avons écrit un plugin Zend Action Controller, qui surveille le contrôleur sitemap, et quand les mises à jour sont faites, il vérifie la dernière mise à jour, et pings Google que le sitemap a été mis à jour.

Tous ces concepts peuvent facilement être portés dans CI, j'imagine.

S'il n'y a pas d'assistant de vue de sitemap dans CI, vous pouvez probablement utiliser les classes de navigation Zend, car Zend est découplé.

Ou vous pouvez simplement générer le document XML avec CI, en utilisant la norme pour les sitemaps ici.

http://www.sitemaps.org/protocol.php

+1

Ecrivez-vous des sitemaps dans un fichier ou les cachez-vous simplement? Pour lister toutes les URL ou seulement les plus importantes une fois? Comment ping-on google? – Manuel

+1

Salut Manuel. Vous pouvez construire votre sitemap progressivement. Commencez par le plus important et continuez à ajouter au fil du temps. Vous souhaiterez probablement mettre en cache dans un fichier. Vous pouvez envoyer une requête HTTP à l'adresse www.google.com/webmasters/tools/ping?sitemap=sitemap_url et remplacer sitemap_url par une URL encodée dans l'url de votre sitemap. – Travis

2

En supposant que vous essayez de créer un sitemap XML, pas html un?

Je ne l'ai pas encore fait, et je veux l'essayer bientôt, mais ce que je ferais est: mettre en place un travail cron qui appelle un chemin comme example.com/index.php/sitemap. la fonction d'index dans votre contrôleur sitemap exécutera alors une requête pour sélectionner tous les titres de tous vos messages + tout ce dont vous avez besoin pour construire une URL complète à ces entrées et, puisque c'est un élément requis dans le protocole sitemaps, quand l'entrée a été mise à jour . Si vous n'avez pas de champ dans votre base de données, vous devrez peut-être l'ajouter.

alors c'est juste une question de boucler les résultats et d'écrire un fichier xml avec la structure appropriée. Au fur et à mesure que vous bouclez, vous devez également décider de la priorité, de changefreq et de tous les autres éléments pour chaque entrée.

ive aussi regardé la version payante de http://www.xml-sitemaps.com/ qui devrait faire tout sauf mettre en place le cron pour vous, à un bon prix et fonctionnant sur votre propre serveur. Je ne pense pas que vous pourriez développer vous-même pour 19,99USD de votre temps. Et, cette application avertit également les moteurs de recherche de nouveau contenu, une méthode pour laquelle je n'ai pas encore décrit ci-dessus.

5

Même si votre contenu est dynamique, vous souhaitez que votre sitemap soit statique. Bien sûr, mettez à jour le sitemap une fois par jour si vous le souhaitez, ou mettez-le à jour chaque fois que vous publiez une nouvelle entrée de blog ... mais n'essayez pas de la créer au moment où elle est demandée. Ce sera un cauchemar de performance.

Je pense que le plan du site de Stackoverflow est mis à jour quotidiennement. Il contient les 50 000 dernières pages modifiées. Le sitemap aide avec le référencement (optimisation des moteurs de recherche).

Recette pour la génération de plan du site over here

0

Un paramètre update-frequency dans la structure de plan du site indique le moteur de recherche à quelle fréquence une page Web est mis à jour. Ne vous méprenez pas sur l'adresse URL d'une page, car elle peut être modifiée de plusieurs façons.

Pour stackoverflow, il peut être questions.php?id=1317539 pour cette page et par exemple, la fréquence de mise à jour est réglée à une minute pour questions.php

Ainsi, chaque minute, un nouveau plan du site est généré pour le site Web stackoverflow.

Mise à jour: This answer par Robert explique ce qu'il advient du sitemap de Stack Overflow lorsqu'une nouvelle question est ajoutée au système.

0

La meilleure solution est d'ajouter à votre fichier apache .htaccess la ligne suivante après RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L] 

et ayant simplement un fichier sitemap.php dans votre dossier racine qui serait normalement accessible via http://yoursite.com/sitemap.xml, l'URL par défaut où tous les moteurs de recherche vont d'abord rechercher.

Le fichier sitemap.php doit être quelque chose comme ça

<?php header('Content-type: application/xml; charset=utf-8') ?> 
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?> 
<?include_once('./myVariables.php'); ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
    <loc><?php echo $URL1; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
    <url> 
    <loc><?php echo $URL2; ?></loc> 
    <lastmod>2005-01-01</lastmod> 
    <changefreq>monthly</changefreq> 
    </url> 
</urlset> 

cela fonctionne :)