DotClear, l'indexation et les robots(.txt)
Par ȷulmud le mercredi 11 janvier 2006, 22:49 - Free the code! - Lien permanent
Il y a quelques mois, je m'étais posé la question de savoir quel contenu de mon blog je souhaitais voir être indexé par les moteurs de recherches. Après réflexion, je me suis dit qu'il ne fallait indexer que les articles et les pages connexes afin d'offrir la meilleure qualité de résultats aux utilisateurs des moteurs de recherche. En fait, il faut surtout chercher à exclure toute page contenant plus d'un billet, ceci afin d'éviter que le contenu de la page soit « pollué » par quantité de mots n'ayant aucun rapport avec le sujet qu'essaie de faire passer l'article.
Mon postulat de base pour arriver à cette conclusion était le suivant : l'élément de base d'information de ce blog est un article dans son entierté. Par conséquent, tout le reste de ce monologue n'a aucun sens pour des blogs de type feuilleton ou des blogs ayant l'habitude de parler de beaucoup de choses différentes dans un seul et même article.
Le but est donc d'empêcher aux robots des moteurs de recherche d'indexer le contenu des pages d'archives, tout en les laissant sotcker tout ce qu'ils souhaitent sur les pages contenant un billet seul. Bien entendu, il faut malgré tout laisser l'autorisation à ces robots de parcourir les pages d'archives, afin qu'ils puissent trouver les pages des billets... La solution à cette problématique porte le doux nom de « balise meta robots. » C'est une balise HTML qui vient se mettre dans l'entête de la page web (section <head>
) et elle doit contenir une combinaison des mots clefs INDEX
, NOINDEX
, FOLLOW
et NOFOLLOW
. Voici la signification de chacun de ces mots clefs :
- INDEX
- indique que le moteur de recherche peut indexer la page courante ;
- NOINDEX
- demande au moteur de recherche de ne pas indexer la page courante ;
- FOLLOW
- indique que le moteur de recherche peut suivre tous les liens de la page courante ;
- NOFOLLOW
- demande au moteur de recherche de ne suivre aucun lien de la page courante.
Pour atteindre le but que je souhaite, il faut donc mettre la balise suivante sur les pages contenant un seul article :
<meta name="robots" content="index,follow" />
et cette balise-ci sur toutes les autres pages :
<meta name="robots" content="noindex,follow" />
Dans DotClear, cela se fait très facilement en mettant la ligne suivante dans la partie <head>
du fichier template.php
du thème :
<meta name="robots" content="<?php if ($mode != 'related' && $mode != 'post') { echo 'noindex,follow'; } else { echo 'index,follow'; } ?>" />
Et voilà, c'est tout ce qu'il y a à faire. Et est-ce que ça marche ? Je crois : depuis que j'ai mis cela en place sur mes blogs, je ne tombe plus sur mes pages d'archives lors de recherche et les billets sont, eux, toujours trouvables facilement.
Lorsque j'ai proposé cette solution sur le forum de DotClear (en réponse à cette question), on s'est interrogé sur la faisabilité de ces mêmes restrictions au moyen d'un fichier robots.txt
, le standard d'exclusion des robots sur le web. Mon sentiment est que cela n'est pas faisable. Il y a en effet deux limitations dans ce standard qui rendent cela fort difficile :
- on ne peut pas autoriser explicitement le parcours de certaines pages ;
- les préfixes utilisés sont inclusifs.[1]
Du coup, il devient impossible d'interdire aux robots de parcourir les pages d'archives mensuelles, mais d'autoriser l'accès aux pages des billets. Il suffit de comparer ces deux URLs pour s'en rendre compte :
- http://www.example.com/index.php/2005/04/01/1-premier-billet (adresse d'un billet) ;
- http://www.example.com/index.php/2005/04 (page d'archive de tous les billets du mois d'avril 2005).
Si on pouvait explicitement autoriser certaines pages avec des règles Allow
(en indiquant que l'on souhaite une priorité plus importante pour ces règles Allow
), on pourrait imaginer générer automatiquement le fichier robots.txt
lors de la mise en ligne d'un nouveau billet. Le fichier contiendrait alors la liste de tous les billets publiés sur des lignes de type Allow
et la liste de toutes les pages d'archives sur des lignes de type Disallow
. Il ne semble donc pas y avoir de solution dans ce cas-là...
De plus, il y a encore un effet de bord qui peut se produire : le standard robots.txt ne permet que d'interdire totalement l'accès d'une page aux gentils robots.[2] Ainsi, en interdisant les pages d'archives, les robots auraient alors certainement beaucoup de peine pour trouver l'intégralité du contenu sur le site... Bin oui, la navigation sur un blog se fait quand même massivement à travers des pages d'archive (en considérant qu'une page d'archive est toute page contenant plus d'un billet, donc y compris la page d'accueil).
Conclusion : la mise en place d'une balise meta robots est très facile et remplit son rôle à merveille... J'ai toutefois un regret : il n'y a pas de moyen d'interdire aux robots d'indexer certains blocs de la page. Chez moi, il est par exemple inutile que les robots indexent la citation aléatoire affichée sur chaque page, puisque cette citation n'apporte aucune information utile.[3]
Notes
[1] Ce qui signifie qu'une règle Disallow: /bob
interdira l'accès au dossier /bob/
, mais également à l'image nommée bobetlachoseverte.jpg
.
[2] Je précise « gentils, » car les robots n'ont absolument aucune obligation de respecter ce standard. Les robots à spam, qui sont continuellement à la recherche de nouvelles adresses email, n'essaient même pas de récupérer ce fichier par exemple.
[3] Oui, je sais, vouloir trouver de l'information utile ici est un paradoxe...
Commentaires
Ton indexation est en URL-RW ? Je ne savais pas que dotclear le proposait ...
Un grand merci pour votre astuce qui sera utile à plusieurs personnes...
Cà serait chouette que DotClear 2 intègre çà d'origine sur ses pages...
Sinon, j'ai eu votre astuce par Google "robots.txt dotclear", vous êtes premier !
Geolem : Je doute que DC2 intègre cela d'office... J'ai pour projet d'écrire un jour la mise à jour de ce billet pour l'adapter à DC2... un jour...
Sympa la méthode, pour ceux qui veulent indexer d'autres page, voici les différent modes de dotclear pour changer la condition à votre gout:
http://petit.dotclear.net/pages/200...
Ton astuce a un problème majeur : elle empêche le référencement de la page principale du blog. !
C'était bien pensé, mais ....
djoh : Comme il est dit dans le billet, je cherche à laisser les moteurs de recherche indexer uniquement les pages contenant un seul billet. Ce n'est donc pas un problème, mais une fonctionnalité.
A ce propos, j'ai publié un plugin dotclear2 pour générer le fichier robots.txt.