v1.1 et URL des produits avec les catégories : désactivable ?...
Started by Cédric Girard, Dec 23 2008 04:01 PM
Bonjour
Bon, je l'avoue je n'ai pas encore installé la v1.1 (la base est créée, le script uploadé, etc... mais je n'ai pas eu le temps matériel de le faire !)
Une question me turlupine néanmoins, au niveau des URL produits car j'ai lu dans le blog que les URL de ces derniers sont désormais de la format "/categorie/id-produit.php"
Est-ce obligatoire ?
Quid du comportement en cas de produits figurant dans plusieurs catégories ? Car là il y a un risque MAJEUR de duplicate content :roll: (chose que je me suis occupé de corriger en intégralité dans la v1.0 - source de la modif bientôt mise à disposition de la communauté !)
Bon, je l'avoue je n'ai pas encore installé la v1.1 (la base est créée, le script uploadé, etc... mais je n'ai pas eu le temps matériel de le faire !)
Une question me turlupine néanmoins, au niveau des URL produits car j'ai lu dans le blog que les URL de ces derniers sont désormais de la format "/categorie/id-produit.php"
Est-ce obligatoire ?
Quid du comportement en cas de produits figurant dans plusieurs catégories ? Car là il y a un risque MAJEUR de duplicate content :roll: (chose que je me suis occupé de corriger en intégralité dans la v1.0 - source de la modif bientôt mise à disposition de la communauté !)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
j'ai regardé sur mon site en V1.1, si tu places un objet dans 2 categories cela redirige vers la meme page, donc l'adresse est la meme. Il n'y a donc qu'une page et pas de duplicate content.
Ca utilise peut-être uniquement la catégorie par défaut pour l'affichage de l'URL... A vérifier...
Patric Codron • Community Manager | Manager de Communauté • PrestaShop
Merci de respecter les règles du forum PrestaShop.com :)
Please comply with the PrestaShop.com forum rules :)
Merci de respecter les règles du forum PrestaShop.com :)
Please comply with the PrestaShop.com forum rules :)
OK merci
C'est déjà ça :cheese:
Si je ne repasse pas dans le coin : joyeux Noël à toutes et à tous !
C'est déjà ça :cheese:
Si je ne repasse pas dans le coin : joyeux Noël à toutes et à tous !
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Up
J'ai installé la 1.1, subsistent des soucis au niveau des URL...
Est-il possible de désactiver la catégorie dans les URL de produits ? Finalement j'y tiens car d'un point de vue SEO pur, j'aime quand c'est carré et démultiplier les mots-clés dans les URL, perso je n'aime pas trop...
J'ai installé la 1.1, subsistent des soucis au niveau des URL...
Est-il possible de désactiver la catégorie dans les URL de produits ? Finalement j'y tiens car d'un point de vue SEO pur, j'aime quand c'est carré et démultiplier les mots-clés dans les URL, perso je n'aime pas trop...
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Ce n'est pas désactivable mais c'est très facile de faire joujou avec. Il suffit de toucher à la classe Link (/classes/Link.php) et au htaccess (même pas ce dernier d'ailleurs, on a gardé les 2 lignes je crois).
Merci Damien, je vais regarder ça.
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Bonjour,
J’avais remarqué cette petite différence de réécriture qui peut aussi poser quelques petits pb lors des mises à jour de sites en production qui utilisent l’ancienne réécriture.
Merci Cédric d’avoir ouvert cette discussion ;)
Au-delà du key de la catégorie que l’on retrouve dans l’URL des produits la mise à jour vers la 1.1 peut poser quelques petits pb au niveau du ref qui a déjà été fait ; Modification des URL dans les moteurs, si des liens spontanés ont été faits vers un produit à partir d’autres sites ces liens ne seront plus valides, etc ….. Bref ……
J’ai donc (merci Damien) modifié le fichier link.php dans classe pour retrouver l’ancienne réécriture pour les produits :
J’ai remplacé les lignes 41 à 52 de link.php de la V1.1 par celle de la V1.0 :
Remplacement de lignes 41 à 52 par :
Sans toucher au .htaccess car la ligne existe encore.
Edit 03.30 pm : voir commentaire dans le code
J’avais remarqué cette petite différence de réécriture qui peut aussi poser quelques petits pb lors des mises à jour de sites en production qui utilisent l’ancienne réécriture.
Merci Cédric d’avoir ouvert cette discussion ;)
Au-delà du key de la catégorie que l’on retrouve dans l’URL des produits la mise à jour vers la 1.1 peut poser quelques petits pb au niveau du ref qui a déjà été fait ; Modification des URL dans les moteurs, si des liens spontanés ont été faits vers un produit à partir d’autres sites ces liens ne seront plus valides, etc ….. Bref ……
J’ai donc (merci Damien) modifié le fichier link.php dans classe pour retrouver l’ancienne réécriture pour les produits :
J’ai remplacé les lignes 41 à 52 de link.php de la V1.1 par celle de la V1.0 :
Remplacement de lignes 41 à 52 par :
// public function getProductLink($id_product, $alias = NULL, $ean13 = NULL)
public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL) // fonctionne mieux an gardant cette ligne !!
{
if (!isset($this->allow)) $this->allow = 0;
if (is_object($id_product))
return ($this->allow == 1)?(__PS_BASE_URI__.intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') :
(_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
elseif ($alias)
return ($this->allow == 1)?(__PS_BASE_URI__.intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') :
(_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
else
return _PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product);
}
Sans toucher au .htaccess car la ligne existe encore.
Edit 03.30 pm : voir commentaire dans le code
Super merci !
Juste histoire de compléter ta contribution, j'apporterai dans ce post les modifs à faire dans le header.php pour éviter tout risque de duplicate content ;-)
Juste histoire de compléter ta contribution, j'apporterai dans ce post les modifs à faire dans le header.php pour éviter tout risque de duplicate content ;-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Up !
Comme dirait Rocco Siffredi, "Chose promise, chose dure" :cheese:
Voici une petite modif à réaliser dans le fichier "header.php" à la racine de votre boutique ; le code à insérer (voir plus bas) est à mettre sous la ligne suivante :
Informations préalables :
* code réalisé et testé uniquement sur boutiques installées à la racine de leur nom de domaine (je pense qu'il faudra modifier le code pour les autres)
* nécessite l'activation impérative de la réécriture d'URL depuis le back-office
* tient compte du paramétrage de PHP (récupération de l'URL courante dans $_ENV['REQUEST_URI'] dans le code ci-dessous ; il est possible que votre paramétrage serveur utilise $_SERVER['REQUEST_URI'])
* testé sur boutiques versions 1.0 finale (sans autres modifs) et 1.1 finale avec la modification de la classe link.php ci-dessus
Ce qui est corrigé :
* URLs des pages produits uniques : quelle que soit l'URL appelée, si elle ne correspond pas à l'URL théorique telle que définie dans les caractéristiques du produit, elle est redirigée automatiquement (redirection HTTP 301)
* URLs des pages catégories uniques : idem
* gestion des pages catégories paginées/triées : elles sont corrigées comme préalablement, et en cas de présence de paramètre de pagination (page différente de la page 1 et/ou présence d'un élément de tri), positionnement de la variable Prestashop "nobots" qui a pour effet de mettre la balise META Robots en "noindex,follow" (en clair : la page n'est pas indexable par les moteurs de recherche mais les URLs sont suivies normalement)
Voilà donc le fameux code, en prod sur l'une de mes boutiques depuis 4 semaines maintenant (à adapter le cas échéant !) :
Améliorations envisageables :
* uniformisation du code quelque soit le paramétrage de PHP
* prise en charge des boutiques installées en sous-répertoires
* prise en charge des pages CMS (pour activation de la variable "nobots" par exemple)
;-)
Comme dirait Rocco Siffredi, "Chose promise, chose dure" :cheese:
Voici une petite modif à réaliser dans le fichier "header.php" à la racine de votre boutique ; le code à insérer (voir plus bas) est à mettre sous la ligne suivante :
require_once(dirname(__FILE__).'/init.php');
Informations préalables :
* code réalisé et testé uniquement sur boutiques installées à la racine de leur nom de domaine (je pense qu'il faudra modifier le code pour les autres)
* nécessite l'activation impérative de la réécriture d'URL depuis le back-office
* tient compte du paramétrage de PHP (récupération de l'URL courante dans $_ENV['REQUEST_URI'] dans le code ci-dessous ; il est possible que votre paramétrage serveur utilise $_SERVER['REQUEST_URI'])
* testé sur boutiques versions 1.0 finale (sans autres modifs) et 1.1 finale avec la modification de la classe link.php ci-dessus
Ce qui est corrigé :
* URLs des pages produits uniques : quelle que soit l'URL appelée, si elle ne correspond pas à l'URL théorique telle que définie dans les caractéristiques du produit, elle est redirigée automatiquement (redirection HTTP 301)
* URLs des pages catégories uniques : idem
* gestion des pages catégories paginées/triées : elles sont corrigées comme préalablement, et en cas de présence de paramètre de pagination (page différente de la page 1 et/ou présence d'un élément de tri), positionnement de la variable Prestashop "nobots" qui a pour effet de mettre la balise META Robots en "noindex,follow" (en clair : la page n'est pas indexable par les moteurs de recherche mais les URLs sont suivies normalement)
Voilà donc le fameux code, en prod sur l'une de mes boutiques depuis 4 semaines maintenant (à adapter le cas échéant !) :
/***** Correct URL Product testing *****/
/***** Code by C.GIRARD http://www.effi10.com *****/
// Global variable for marquing "noindex" pages on meta robots (for ex. for pagined categories pages, or non useful pages like "conditions.php", etc...)
if (isset($_GET['id_product']) AND Validate::isUnsignedId($_GET['id_product']))
{
// We're on a product page
$cookie = new Cookie('ps');
Tools::setCookieLanguage();
$product = new Product(intval($_GET['id_product']), true, intval($cookie->id_lang));
if (Validate::isLoadedObject($product) AND $product->active)
{
$goodurl=$_GET['id_product']."-".$product->link_rewrite.".html"; // Theorical URL
$currenturl=basename($_ENV['REQUEST_URI']); // Current URL
$redir=strcmp($goodurl, $currenturl);
if($redir!=0)
{
// Not the good URL so we do a 301 HTTP redirection to the good one !
header('HTTP/1.1 301 Moved Permanently', false, 301);
header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl);
exit();
}
};
}
if (isset($_GET['id_category']) AND Validate::isUnsignedId($_GET['id_category']))
{
// We're on a category page
$cookie = new Cookie('ps');
Tools::setCookieLanguage();
$category = new Category(intval(Tools::getValue('id_category')), intval($cookie->id_lang));
if (Validate::isLoadedObject($category) AND $category->active)
{
$theoricalurl="";
// Detection of potential page number
if (isset($_GET['p'])) {
$varpagenumber=$_GET['p'];
if($varpagenumber>1) {
$theoricalurl="?p=$varpagenumber";
$smarty->assign('nobots', 1); // put a "noindex,follow" value on meta robots to avoid duplicate content on pagined categories pages
};
};
if (isset($_GET['orderby'])) {
$varorderby=$_GET['orderby'];
$theoricalurl.=(empty($theoricalurl)?"?":"&")."orderby=$varorderby";
$smarty->assign('nobots', 1); // put a "noindex,follow" value on meta robots to avoid duplicate content on sorted categories pages
};
if (isset($_GET['orderway'])) {
$varorderway=$_GET['orderway'];
$theoricalurl.=(empty($theoricalurl)?"?":"&")."orderway=$varorderway";
$smarty->assign('nobots', 1); // put a "noindex,follow" value on meta robots to avoid duplicate content on sorted categories pages
};
$goodurl=$_GET['id_category']."-".$category->link_rewrite.$theoricalurl; // Theorical URL
$currenturl=basename($_ENV['REQUEST_URI']); // Current URL
$redir=strcmp($goodurl, $currenturl);
if($redir!=0)
{
// Not the good URL so we do a 301 HTTP redirection to the good one !
header('HTTP/1.1 301 Moved Permanently', false, 301);
header("Location: http://" . $_SERVER["SERVER_NAME"] ."/". $goodurl);
exit();
}
};
}
Améliorations envisageables :
* uniformisation du code quelque soit le paramétrage de PHP
* prise en charge des boutiques installées en sous-répertoires
* prise en charge des pages CMS (pour activation de la variable "nobots" par exemple)
;-)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
(vous noterez que j'ai commenté in english juste histoire de partager le code avec la communauté... bon, j'ai pas traduit mon billet, hein :lol: )
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
J'allais faire un truc du genre, car depuis le passage en 1.1 c'est la cata au niveau visites chez moi et je pense que Google m'a sanctionné pouur duplicate content... Depuis la nouvelle version, les anciennes urls sans catégorie sont toujours valides alors que de nouvelles avec catégorie ont fait leur apparition. Il faudrait effectivement faire comme tu as fait avec une 301. Par contre le nobots sur le CMS je suis pas pour. En effet les pages CMS peuvent avoir beaucoup de texte intéressant à indexer. Je vais essayer d'installer ton code sur ma boutique et voir si je dois adapter quelque chose. J'ai une difficulté supplémentaire car le .com change la langue en anglais alors que le .fr est du français (du coup j'ai du modifier le module gsitemap pour avoir 2 sitemaps).
Message à la Prestateam : ajoutez cette modif d'origine, ça c'est super !
Message à la Prestateam : ajoutez cette modif d'origine, ça c'est super !
Ma boutique Prestashop : Parapharmacie en ligne - Online Drugstore
J'ai modifié ton premier if pour achever le but inverse, c'est à dire conserver la catégorie, chose qui, il me semble, est assez logique. J'ai pas testé de fond en comble, mais ça a l'air de fonctionner (mais ne fonctionnera sûrement que si votre boutique est à la racine.
J'ai aussi rajouté un truc pour éviter la redirection si il s'agit de l'ajout d'un commentaire à un produit, car sinon l'ajout est impossible.
J'ai aussi rajouté un truc pour éviter la redirection si il s'agit de l'ajout d'un commentaire à un produit, car sinon l'ajout est impossible.
if (isset($_GET['id_product']) AND Validate::isUnsignedId($_GET['id_product']) && !isset($_POST["content"]))
{
// We're on a product page
$cookie = new Cookie('ps');
Tools::setCookieLanguage();
$product = new Product(intval($_GET['id_product']), true, intval($cookie->id_lang));
if (Validate::isLoadedObject($product) AND $product->active)
{
$category = Category::getLinkRewrite($product->id_category_default, intval($cookie->id_lang));
$goodurl="/".($category ? ($category.'/') : '').$_GET['id_product']."-".$product->link_rewrite.".html"; // Theorical URL
$currenturl=$_ENV['REQUEST_URI'];//basename($_ENV['REQUEST_URI']); // Current URL
$redir=strcmp($goodurl, $currenturl);
if($redir!=0)
{
// Not the good URL so we do a 301 HTTP redirection to the good one !
header('HTTP/1.1 301 Moved Permanently', false, 301);
header("Location: http://" . $_SERVER["SERVER_NAME"] . $goodurl);
exit();
}
};
}
Ma boutique Prestashop : Parapharmacie en ligne - Online Drugstore
Ah voui, j'utilise pas les commentaires sur produits...
Pour les pages CMS, il est clair que l'on peut désirer en faire indexer certaines, mais pour ce qui est de la livraison, des CGV et autres mentions légales : aucun intérêt :) (à moins que tu ne veuilles viser la première page Google sur "Conditions générales de vente" :cheese: )
Pour les pages CMS, il est clair que l'on peut désirer en faire indexer certaines, mais pour ce qui est de la livraison, des CGV et autres mentions légales : aucun intérêt :) (à moins que tu ne veuilles viser la première page Google sur "Conditions générales de vente" :cheese: )
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Bonjour,
Les redirections de Milhouse fonctionne bien mais mettent hors circuit les modules "sendtoafriend" ou "productquestion"
Qu'elle est la manip pour les laisser opérationnels?
Merci
Les redirections de Milhouse fonctionne bien mais mettent hors circuit les modules "sendtoafriend" ou "productquestion"
Qu'elle est la manip pour les laisser opérationnels?
Merci
Vente en ligne d'oeuvres d'art
HangART online shop
Galerie d'art contemporain
Prestashop Version 1.2.5.0
Hébergement 1and1 mutualisé
HangART online shop
Galerie d'art contemporain
Prestashop Version 1.2.5.0
Hébergement 1and1 mutualisé
En fait dans cette ligne
Tu peux rajouter d'autres variables genre celle envoyées par le module sendtoafriend pour empêcher de changer l'url dans ce cas, comme j'ai fait pour les commentaires en fait.
if (isset($_GET['id_product']) AND Validate::isUnsignedId($_GET['id_product']) && !isset($_POST["content"]))
Tu peux rajouter d'autres variables genre celle envoyées par le module sendtoafriend pour empêcher de changer l'url dans ce cas, comme j'ai fait pour les commentaires en fait.
Ma boutique Prestashop : Parapharmacie en ligne - Online Drugstore
Merci pour la réponse, mais je ne sais pas détecter ces variables...
Alors si tu pouvais me renseigner un peu plus.
Alors si tu pouvais me renseigner un peu plus.
Vente en ligne d'oeuvres d'art
HangART online shop
Galerie d'art contemporain
Prestashop Version 1.2.5.0
Hébergement 1and1 mutualisé
HangART online shop
Galerie d'art contemporain
Prestashop Version 1.2.5.0
Hébergement 1and1 mutualisé
Je viens de regarder et pour sendtoafriend, c'est pas une variable, il vérifier l'URL, j'ai pas trop le temps de regarder là, mais dès que j'ai du temps je le fais. C'est pas très compliqué.
Ma boutique Prestashop : Parapharmacie en ligne - Online Drugstore
Au secours, cedric.
impossible à faire marcher, malgrés tout les essais en longt en large et en trav...!!
J'ai pourtant bien suivi http://www.effi10.co...licate-content/
Je suis en V1.1 chez ovh
ca tourne en boucle l'url se réécri bien et page blanche
et sans ca duplicate content sur toute les url pour google.
Une idée??
merci
impossible à faire marcher, malgrés tout les essais en longt en large et en trav...!!
J'ai pourtant bien suivi http://www.effi10.co...licate-content/
Je suis en V1.1 chez ovh
ca tourne en boucle l'url se réécri bien et page blanche
et sans ca duplicate content sur toute les url pour google.
Une idée??
merci
E-commercant depuis 2004
Prestashop V1.2.5 modifié final en production!
PROMAC OSX!!!
Prestashop V1.2.5 modifié final en production!
PROMAC OSX!!!
Bonjour
Je pense que ça doit venir du htaccess et de ses options. Je sais que chez OVH il y a des trucs tordus sur ce point précis... et il me semble qu'il y a eu des fils sur ce forum à ce sujet !
Je travaille avec eux pour les domaines ou les certifs SSL, mais pour l'hébergement, j'ai arrêté : ras le bol des spécificités (que ce soit pour Prestashop ou pour d'autres CMS : Wordpress, etc...)
Je pense que ça doit venir du htaccess et de ses options. Je sais que chez OVH il y a des trucs tordus sur ce point précis... et il me semble qu'il y a eu des fils sur ce forum à ce sujet !
Je travaille avec eux pour les domaines ou les certifs SSL, mais pour l'hébergement, j'ai arrêté : ras le bol des spécificités (que ce soit pour Prestashop ou pour d'autres CMS : Wordpress, etc...)
EX entrepreneur spécialiste du référencement Prestashop, certifié CESEO - Attention, je n'exerce plus mais je partage désormais mes connaissances sur mon site dédié à Prestashop et Wordpress !
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel
Mon projet phare (créé de A à Z) : Matériel de cuisine professionnel




Back to top









