Jump to content
ve34

Comportement étrange des URLS canonicals des produits

Recommended Posts

Bonsoir,

Après passage de prestashop 1.6 vers prestashop 1.7 j'ai remarqué que les produits comportant des déclinaisons ont une URL canonique qui est redirigée!

Avant sous presta 1.6 seule l'ID du produit apparaissait dans l'URL, depuis 1.7 une ID supplémentaire correspondant à l'attribut du produit est apparu ce qui fait que mon produit qui sous 1.6 avait une URL de la forme www.domaine.fr/35-mon-produit.html possède maintenant une URL de la forme  www.domaine.fr/35-425-mon-produit.html#/12-taille-35_38 et elle possède l'URL canonique suivante : www.domaine.fr/35-mon-produit.html

Jusque là ok mais là où je ne comprend pas c'est que mon URL canonique www.domaine.fr/35-mon-produit.html est redirigée vers l'URL du produit www.domaine.fr/35-425-mon-produit.html ???? 
Est-ce que quelqu'un serait en mesure de m'expliquer ce qui se passe ? 

Ce comportement n'a pas lieu avec les catégories. 

Merci par avance de vos lumières sur le sujet.
Bonne soirée ve34

Share this post


Link to post
Share on other sites

cela n'a rien n'à voir avec la version mais avec l'activation du module à facettes.

Celui-ci rajoute effectivement #decli1-decli2-decli3 etc...

 

Le comportement est le même sous 1.5 & 1.6

Prestashop ne redirige que si l'internaute a cliqué sur la déclinaison en question (dans le filtre ou sur une image.

Share this post


Link to post
Share on other sites

Et tout ce qui est derrière une # ne fait pas partie de l'url. C'est une ancre ou fragment. Ignoré des moteurs de recherche.

Share this post


Link to post
Share on other sites

Bonjour,

Merci pour vos réponses mais j'ai du mal m'exprimer. J'ai bien compris que tous ce qui est après le # est ignoré par les moteurs de recherche.

Ce qui m'inquiète c'est que sur mes pages produits et dont le produit par défaut à cette URL www.domaine.fr/35-425-mon-produit.html, l'URL canonical indiquée pour cette page est www.domaine.fr/35-mon-produit.html (sans l'ID d'attribut).  Et cette URL canonical quand je clique dessus est redirigée vers l'URL de mon produit par défaut www.domaine.fr/35-425-mon-produit.html

Si l'URL canonical est une URL qui se redirige vers une autre URL alors ce n'est pas une URL canonical! Pourquoi ne pas alors avoir par défaut l'URL du produit par défaut comme canonical ?

Ce comportement est étrange et anormal je pense et véritablement nuisible pour le SEO

Quelle solution pour modifier ce problème de redirection de l'URL canonical ?

Share this post


Link to post
Share on other sites

Comment gérez-vous les canonicals ? Parce  que nativement, Prestashop fait de la bouze^^

Share this post


Link to post
Share on other sites

 

2 hours ago, Eolia said:

Comment gérez-vous les canonicals ? Parce  que nativement, Prestashop fait de la bouze^^

 

Ah ben voila qui est prometteur ! :D:D
Plus sérieusement l'idée de mettre des canoniques sur les produits avec déclinaison est une bonne idée mais encore faut il utiliser les bonnes et surtout sans redirection!

Justement là je gère rien du tout puisque j'ai des redirections que je ne veux pas à partir de mes canonicals

J'ai juste mis dans le back office sur redirection vers la canonical en 301

Share this post


Link to post
Share on other sites

Ok, perso j'utilise un module développé maison et je n'ai plus ce problème (sachant qu'il gère également les no-index et no-follow)

Share this post


Link to post
Share on other sites

Bonjour,

J'ai remarqué le même problème que ve34, quelqu'un a travaillé sur la problématique ? ne faudrait il pas pointer l'url de la canonical + celle de l'attribut par défaut pour éviter les redirections justement ?

 

Share this post


Link to post
Share on other sites

@skrime Comment faire une redirection en fonction d'une information non transmise?

L'ancre (#...), n'est pas transmise au serveur par aucun navigateur de cet univers. C'est le protocole http qui est comme ça

Share this post


Link to post
Share on other sites

non ce n'est pas ça le probleme vient de l'id attribut

si j'ai un produit blabla avec pour id 1 et un id d'attribut par exemple 77

l'url canonical sera 1-blabla .html et celle ci redirigera automatiquement en 301 ou 302 (au choix dans prestashop) vers 1-77-blabla.html

Share this post


Link to post
Share on other sites

il me semble que le cas que tu cite est configurable par SEO&URL: {category:/}{id}{-:id_product_attribute}-{rewrite}{-:ean13}.html

non?

Share this post


Link to post
Share on other sites

Oui absolument c'est configurable, mais justement le champ canonical ne tient pas compte de cet attribut.

on se retrouve donc avec une canonical sans attribut qui génère une 301 vers celle avec l'attribut par défaut, ce qui n'est vraiment pas conseillé vis à vis de google

Share this post


Link to post
Share on other sites
--- /base/prestashop_1.6.1.23/classes/Dispatcher.php	2018-11-01 09:01:10.000000000 +0100
+++ classes/Dispatcher.php	2019-03-14 14:04:57.472482980 +0100
@@ -111,6 +111,7 @@
             'rule' =>        '{category:/}{id}-{rewrite}{-:ean13}.html',
             'keywords' => array(
                 'id' =>            array('regexp' => '[0-9]+', 'param' => 'id_product'),
+                'id_product_attribute' =>            array('regexp' => '[0-9]+'),
                 'rewrite' =>        array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'),
                 'ean13' =>        array('regexp' => '[0-9\pL]*'),
                 'category' =>        array('regexp' => '[_a-zA-Z0-9-\pL]*'),
--- /base/ps/prestashop_1.6.1.23/classes/Link.php	2018-11-01 09:01:10.000000000 +0100
+++ classes/Link.php	2019-03-14 13:53:50.749701875 +0100
@@ -116,6 +116,11 @@
         $params['meta_keywords'] =    Tools::str2url($product->getFieldByLang('meta_keywords'));
         $params['meta_title'] = Tools::str2url($product->getFieldByLang('meta_title'));
 
+        if ($dispatcher->hasKeyword('product_rule', $id_lang, 'id_product_attribute', $id_shop)) {
+            $params['id_product_attribute'] = $ipa ? $ipa : $product->cache_default_attribute;
+            $ipa = 0;
+        }
+
         if ($dispatcher->hasKeyword('product_rule', $id_lang, 'manufacturer', $id_shop)) {
             $params['manufacturer'] = Tools::str2url($product->isFullyLoaded ? $product->manufacturer_name : Manufacturer::getNameById($product->id_manufacturer));
         }

Puis dans SEO&URL: {category:/}{id}{-:id_product_attribute}-{rewrite}{-:ean13}.html

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More