Prestashop™ est un système de publication de boutiques en ligne Open-source écrit en PHP : il permet, en quelques minutes, de mettre en ligne une boutique capable de présenter plusieurs milliers de produits et de tout gérer de la base (panier d’achats, commande, paiement) mais aussi le suivi de livraison, les retours, statistiques…

Une boutique va devoir être trouvée, donc son référencement va devoir être efficace, un des éléments clés du SEO, c’est de mettre en place des règles d’URL rewriting qui, en plus de faciliter le travail de crawling des robots, permettent d’ajouter de la cohérence et du sens aux liens et aux pages entre elles. Le problème, c’est que Prestashop™ a une méthode pour le moins étrange de gérer les URL réécrites… voyons ça en détails :

La réécriture d’URL dans l’idéal

Soient trois catégories, A, B et C. C est une catégorie fille de B qui est, elle même, fille de A. 1, 2 et 3 sont leurs Identifiant uniques respectifs. Soient un produit P faisant partie de la catégorie C et son identifiant unique 100.

Dans l’idéal, l’url réécrite permettant d’accéder à la page du produit P devrait être /a/b/c/p/ ou /a/b/c/p.html ou encore, /1-a/2-b/3-c/100-p ou enfin /1-a/2-b/3-c/100-p.html

L’idée est qu’un robot qui (re)découvre le site via l’URL du produit P puisse, de lui même, même si la page du produit P a un souci (problème d’affichage, maintenance…) et donc de pouvoir déduire de lui même l’URL lui permettant d’accéder aux catégories A, B et C.

En découvrant l’URL /1-a/2-b/3-c/100-p.html, le robot va remonter le chemin, et visitera /1-a/2-b/3-c/, puis /1-a/2-b/ puis /1-a/ et découvrira par la même comment accéder à tout le catalogue, et comprendra quel lien lie la page dont l’URL est /1-a/ au produit dont la page est accessible via l’URL /1-a/2-b/3-c/100-p.html puisque la page /1-a/ est une page parente de la page du produit P.

Dans la vraie vie, cet exemple donnerait, par exemple : /1-bagagerie/2-grand-voyageur/3-trolleys/100-bagage-trolley-cuir-noir-roulettes.html

Ce que fait Prestashop™

Pour réécrire une URL, Prestashop™ utilise plusieurs méthodes, suivant la page à afficher et sa position.

Reprenons notre exemple : trois catégories, A, B et C. C est une catégorie fille de B qui est, elle même, fille de A. 1, 2 et 3 sont leurs Identifiant uniques respectifs, ainsi qu’un produit P faisant partie de la catégorie C, son identifiant unique étant 100.

Pour A, Prestashop™ génèrera l’URL /1-a, jusqu’ici, tout va bien.

Pour B, Prestashop™ devrait générer, logiquement, /1-a/2-b, mais il génère /2-b ! idem pour C : pas de parents dans l’URL pour les catégories.

Pour P, Prestashop™ génère /c/100-P.html … vous lisez bien : non seulement la filiation entre C, B et A n’est pas spécifiée, mais l’identifiant de C ne l’est pas non plus ! donc le crawler qui remontera à l’URL /c aura une belle erreur 404.

Si on reprend notre exemple concrêt, au lieu d’avoir l’adresse /1-bagagerie/2-grand-voyageur/3-trolleys/100-bagage-trolley-cuir-noir-roulettes.html, on aura soit /1-bagagerie, /2-grand-voyageur, ou /3-trolleys pour les catégories, soit /trolleys/100-bagage-trolley-cuir-noir-roulettes.html pour le produit.

Merci Prestashop™ !

Comment faire alors ?

Je cherche : apparemment, il n’est pas prévu que Prestashop™ fonctionne autrement, donc il va falloir coder et modifier le code. Je posterai ici-même le fruit de mes recherches.

9 commentaires :

  1. Alex

    Le

    Je ne trouve pas que ce soit si mal pensé que ça. L’url n’est pas un fil d’ariane. Trop de niveaux dans l’url pénalise sa valeur, et justement l’important est de valoriser le niveau sur lequel on se trouve, donc le dernier.
    Ensuite, même si l’url rewriting est un (petit) plus pour le SEO, il est loin d’être primordial.
    Pour finir, même si Prestashop n’est pas parfait, il est pour moi, à mon humble niveau de connaissance, le meilleur CMS e-commerce open-source ;-)

  2. Jean-François VIAL

    Le

    @Alex :
    100% d’accord sur le fait que Prestashop™ soit une solution très utile comblant le fossé entre L’usine à gaz surpuissante qu’est Magento™ et les boutiques mutualisées.
    100% d’accord avec le fait qu’une URL avec trop de sous-dossiers n’est pas très bon non plus. Mais une URL avec quelques sous-dossiers est mille fois moins pénalisante qu’une URL qui mets toutes les catégories au même niveau hiérarchique, ou qu’une URL composée d’éléments inexistants !

    Une URL n’est pas un fil-d’ariane, certes, mais «URL» signifie, je le rappelle quand même, Uniform Ressource Locator : Localisateur de Ressources Uniformisé. Chaque élément d’une URL est significatif et doit permettre d’accéder à une ressource ! Rien que pour ça, Prestashop est dans le faux.

    Enfin, entre un site dont toutes les pages existent, et un site dont au moins autant de pages que de produits renvoient une erreur 404, Google (et les autres) ne tergiversent pas 10 ans : c’est le premier qui sera placé en premier dans les SERPS.
    Je suis en train de terminer la mise en ligne d’une boutique contenant près de 1000 objets, et allant en accueillir plus de 2000. Lorsque je pense qu’en même temps le site aura autant de pages en erreur 404, ça me fait vraiment tout drôle…

  3. Tanguy

    Le

    Bonjour,

    Je rejoint Alex sur le coup.
    Si tu as un site sur 6 niveaux comment est l’adresse et au fait vous le savez que Google limite de tout façon la longueur des url.

    Après pour le référencement l’url rewriting doit faire tout au plus 0,05% de l note finale donc c’est bien mais pas primordiale.

    Jusqu’à maintenant beaucoup d’article existent pour dire que Prestashop est nul mais personne n’a jamais mis en place une vrai analyse proposant des évolution pratique du code ou du design de base pour améliorer les choses.Ainsi quel est vraiemnt l’apport que pourrait avoir le changement de juste l’url ?

    Donc je ne suis pas contre cette analyse, je trouve juste qu’il est facile de dire que cela n’est pas bien sans preuves.

    A oui, allez voire chez rueducommerce ou d’autre grands nom comment est le duplicate content …

  4. Jean-François VIAL

    Le

    @Tanguy
    En effet, encore une fois, je suis complètement d’accord sur le fait que l’impact sur la «note finale» d’une mauvaise gestion des URLs est mince, mais lorsqu’on reviens aux fondamentaux (une URL est un chemin dont tous les éléments sont significatifs) on voit qu’il y a clairement un souci. En comparaison, je te propose de voir comment WordPress gère les URLs réécrites : le jour et la nuit.

    Je ne dis pas que Prestashop™ est «nul», je dis qu’hélas, pas mal de choses sont trop rigides, et ici, en particulier, la gestion des URLs qui est, à mon sens, plus qu’étrange.

    Encore une fois, il n’est pas question ici de taper gratuitement sur Prestashop™ qui reste un très beau projet, mais de mettre un coup de projecteur sur un des soucis de Prestashop™, et de réfléchir à un palliatif.

    Prestashop™ est très bien, sauf si on veut sortir des sentiers battus : là, ça deviens rapidement la plaie. Je ne m’étendrais pas plus sur le sujet, il suffit de mettre le nez dans le code pour comprendre de quoi je parle (code pas documenté du tout, rien que ça, ça rend l’évolution et la correction de bugs épiques), mais ça n’est pas le sujet du billet.

  5. Jean-François VIAL

    Le

    Générer artificiellement 50% de liens inexistants, je trouve que c’est la cata. Lorsqu’un crawler visite ton site, tu penses vraiment qu’il se limite aux pages dont les liens sont présents en dur sur les pages ? Non, il remonte les arborescences. Et que crois-tu qu’il «pense» d’un site dont 50% (ou presque) de l’arborescence retourne une erreur 404 ? Eh bien que c’est un site peu abouti, donc il le fait descendre dans les SERPs. Même sans parler de SEO, c’est une ineptie sémantique : chaque membre d’une URL est siginicatif, donc doit exister et renvoyer une ressource ou, en tous cas, autre chose qu’un 404…

  6. kawapoulpe

    Le

    bonjour,
    Qu’en est-il de vos réflexions sur le sujet ?
    Je viens de découvrir cette page ici présente par hasard en cherchant une solution à un autre de mes problèmes sur presta.
    Et je trouve votre réflexion très intéressante, mais il n’y a pas de nouvelles depuis plus de 6 mois …..
    Etes-vous toujours là ou bien trop absorbé par la difficulté que pose la résolution de cet épineux problème ?

    Cordialement.

Écrire un commentaire

  • (ne sera pas publié ou utilisé pour vous envoyer du spam)
  • (liens en nofollow)