22

WordPress et les URL de catégories: le bug

Ouille Aïe Aïe!!! Alors que je testais un nouvel outil SEO du nom de Minalyzer pour la rédaction d’un prochain article (qui est loin d’être fini vu l’interface peu intuitive de ce crawler), j’ai eu la surprise de voir des URL de catégories WordPress assez étranges remonter.
Bug de WordPress? Erreur de programmation? J’ai découvert que l’on pouvait générer du contenu dupliqué sur les blogs utilisants WordPress en toute facilité.

URL de catégories buggées

Par défaut, quand on appelle une URL de catégorie sous WordPress, c’est sous cette forme: http://www.domain.com/%category% (où « %category% » correspond à l’identifiant de la catégorie appelée). La page affiche les derniers articles de la catégorie comme ici: http://www.yapasdequoi.com/blog/category/seo

Mais en rajoutant plusieurs fois l’identifiant de la catégorie à la suite en séparant chaque occurrence avec des slashs, WordPress renvoie toujours le contenu de la page catégorie, sans aucune erreur 404 mais bien avec un status 200 dans l’entête HTTP.

Après avoir testé si ça ne venait pas que de mon thème/blog, j’ai essayé d’appliquer la même méthode sur d’autres sites WordPress: cela se produit avec tous les blogs WordPress.

Quelques exemples:

http://wordpress.org/news/category/community/community/community/community/
http://wordpress.org/news/category/community/community/
http://www.blog-pes.com/category/news-pes/news-pes/news-pes

Je ne mets pas d’URL des copains blogueurs SEO en exemple, je ne voudrais pas leur générer du contenu dupliqué…
Essayez sur votre blog WordPress, vous verrez qu’aucune 404 ne pointe le bout de son nez!

Et alors, ça fait quoi?

Rien de très grave à priori, mais un thème mal codé ou une erreur de lien pourra vous générer du beau contenu dupliqué. Quand au NSEO, ça me semble très peu probable avec cette méthode.
Mais le Duplicate Content n’étant jamais bon, vous pouvez donc vous prémunir de ce bug en utilisant la balise <link rel=canonical dans les pages catégories, mais perso, ça n’est pas mon truc. Un petit hack dans le fichier functions.php? une règle de réécriture? ça reste à creuser.

Voilà, je voulais juste vous informer de cette petite découverte, qui reste pour moi une anomalie de WordPress… C’est un article du dimanche hein, ne m’en voulez pas 😀

22 commentaires

  1. Article du dimanche mais article interessant pour ceux comme moi qui n’avais pas connaissance de ce bug.

    Est ce que l’expert Daniel Roch etait au courant ? 🙂

  2. Hello, moi j’ai le plugin « WP No Category Base » qui me corrige ce bug en automatique (404) en plus de me supprimer /category/ de l’URL 🙂

    • Plutôt que de renvoyer un 404, je pense que ça serait mieux de renvoyer un 301, vers la première catégorie qui suit le /category/. Comme ça, même si pour une raison ou une autre tu te retrouves avec un /category/test/test/ tu ne perds pas le visiteur sur une page 404.

      • D’accord pour la 301 mais pas pour la première occurence 😉 Plutot la dernière comme WordPress le fait lui même 😉

    • Pourquoi utiliser un n-ième plugin alors que WP gère très bien ça par défaut ?
      La catégorie on ne la met tout simplement pas comme ça on évite le duplicate.

      • Le « bug » apaprait aussi si on supprime « category » via un « . » dans le rewrite.

  3. Ah ouais quand même …

    Merci pour l’info Aymeric : pour des blogs persos, je pense pas que ça soit très grave.
    Mais pour le blog d’un money site, je laisserai pas ça en l’état perso : c’est donner le bâton pour se faire battre (quelques blasts vers ces pages en full DC et voilà …)

    Mais bon je viens de regarder et comme tu le dis ça ne « marche » que pour les catégories qui sont généralement en DC car reprennent des extraits des articles donc au final c’est pas trop grave (ça va pas m’empêcher de dormir ^^)

  4. Effectivement comme dit Julien WP No Category Base corrige ce bug car je n’ai pas ce soucis non plus 🙂

  5. Fallait la trouver celle-ci.
    Je pense que de mon coté je vais opter pour une redirection pour mes blogs qui n’ont pas le plugin’s donné par Julien.

    Pour ce qui est la NSEO, je pense qu’il y a pas mal de moyen de s’amuser déjà pour les personnes mal-attentionnées et que c’est une mauvaise nouvelle d’en découvrir une de plus (un blast sur une centaines d’url’s se fait en quelques minutes avec le soft adéquate même pour une NSEO débutant).

  6. Bonjour,

    « Ceci n’est pas un bug, mais une feature. » Voilà comment on pourrait résumer mon commentaire.
    Pour ceux qui veulent aller plus loin, voici l’explication :
    Déjà, WordPress fonctionne avec un système de rewrite pour avoir des prettylinks, si vous ne l’activez pas, impossible de reproduire le « bug » incriminé ici. Si vous avez choisi autre chause que « Default » dans les permaliens alors pour pourrez le reproduire.
    Ensuite, ce système utilise des règles, des regex sur les urls, qui en quelque sorte « détectent » la page demandée.
    Pour le cas de Aymeric, une catégorie. La règle qui réponds « true » à Aymeric est la suivante :
    « category/(.+?)/?$ » (si vous avez mis un « . » dans le rexrite du perlaink des catégories, c’est celle ci : « (.+?)/([^/]+)(/[0-9]+)?/?$ ») et WordPress la transforme en cette requête « category_name=community%2Fcommunity%2Fcommunity&name=community&page= » et le code qu’utilise WordPress pour ne garder que « community » le voici :
    $leaf_path = sanitize_title( basename( $category_paths ) );
    C’est « basename » qui ne garde que le dernier élément. Vous pouvez donc aussi faire :
    http : //wordpress.org/news/category/je/ne/suis/pas/une/page/de/community/
    Celà fonctionne aussi …
    Si cela vous gène, essayez avec ce bout de code que je viens de faire et tester sur mon site demo avec twentyten : http://pastebin.com/AC4D3tuS
    Collez dans functions.php du thème par exemple.
    Bonne journée

  7. Si les codeurs de wordpress sont au courant de se problème, il y a de grandes chances qu’il soit corrigé lors d’une prochaine mise à jour.

  8. Je suis assez old school mais j’aime bien avoir une url fixe par page donc même si cela est une feature, je vais m’arranger pour corriger ce détail.
    Quand à l’aspect négatif en termes de SEO, il est relativement moindre comme dit dans l’article mais pourquoi prendre le moindre risque, d’autant plus qu’un plugin corrige cela apparament.
    Merci du partage.

    • Oui et dans cet article en commentaire le 16 juillet j’avais déjà donné le code 😉 héhé

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *