Prestashop et les redirections 301

Assez souvent il faut pratiquer la mise en oeuvre de redirections 301 sur une boutique Prestashop. Cette problématique survient lorsqu’on doit déplacer le site vers un nouvel emplacement ou lors du changement de domaine, voir lors d’une refonte.

Pourquoi faire des redirections 301

Google index toutes les pages de votre site régulièrement, du coup si vous changez d’emplacement votre boutique ex. de « /shop » vers la racine « / » vous aurez des liens morts vers la page 404 de Prestashop. L’index de Google met du temps à s’actualiser, il faut donc que les anciennes urls obsolètes, conduisent malgré tout à la nouvelle page. Le cas se produit aussi quand vous migrez par exemple d’une plateforme e-commerce X ou Y vers Prestashop, les liens ne seront plus identiques, pourtant il faudra mettre en place des redirections qui puissent fonctionner. A noter aussi que le fait de mettre des redirections 301 peut faire perdre environ 10% de la visibilité, mais cela est inévitable… donc imaginez si vous ne mettez « pas » de redirections 301 c’est encore pire.

La page 404 donne une mauvaise image à l’acheteur, mais aussi pour le référencement.

Récupérer les urls et définir les règles

Le plus délicat c’est de pouvoir exporter toutes vos anciennes urls et deviner la nouvelle url en fonction de la solution e-commerce que vous utilisez. Partons du principe qu’il s’agit d’une boutique Prestashop qui décide de changer d’emplacement… (pour passer de  /shop à la racine).  La première étape est par exemple d’exporter les tables « ps_products », « ps_category », « ps_cms », afin d’avoir tous les ID concernés.

Avec le fichier ci-dessous qui concerne « ps_product » on sait donc qu’il est possible de générer des anciens liens vers les produits :

  • http://www.monsite/shop/product.php?id_product=20
  • http://www.monsite/shop/product.php?id_product=21

Qui ensuite devraient être redirigés vers la nouvelle url, qui se trouve directement à la racine et non plus dans le vieux répertoire /shop/.

  • http://www.monsite/product.php?id_product=20
  • http://www.monsite/product.php?id_product=21

Ce qui est important c’est de pouvoir générer des urls rapidement grâce à Excel, cela est indispensable, l’idée est d’avoir deux colonnes l’une avec l’ancienne url et l’autre avec la nouvelle url et dans la 3ème colonne la règle à ajouter au « .htaccess », la fonction « CONCATENER » est indispensable pour les redirections 301. Elle s’utilise très simplement, par exemple dans le cas présent le code de la cellule « C2 » est :

Il suffira ensuite de copier en masse cette 3ème colonne dans votre fichier « .htaccess ».

Quand le .htaccess ne suffit pas

Le problème ce sont les redirections d’urls avec « ? » dans l’adresse ou des caractères spéciaux, cela ne marchera pas forcément avec un .htaccess et toute la bonne volonté du monde. Dans des cas de ce genre, il est préférable d’ajouter des règles directement dans le fichier « config/config.inc.php » qui est appelé au lancement de Prestashop.

Dans le cas ci-dessous il s’agit de redirection pour un marchand qui passe d’une plateforme « WordPress » à « Prestashop » le site est donc toujours à la racine, mais il faut rediriger les urls. Dans le cas présent on fait un tableau avec deux valeurs « l’ancienne / nouvelle » url, s’il s’agit une ancienne url on redirige vers la nouvelle (en faisant le contrôle sur REQUEST_URI).

$urls = array();
$urls[]=array('products?lang=fr','fr/12-nos-produits');
$urls[]=array('products/purifying-and-balancing-care?lang=fr','fr/soins-du-visage/9-soin-purifiant-equilibrant-7640148480130.html');
$urls[]=array('products/nourishing-and-regenerating-care?lang=fr','fr/soins-du-visage/8-soin-nourrissant-regenerant--7640148480147.html');
$urls[]=array('products/anti-wrinkle-anti-ageing-care?lang=fr','fr/soins-anti-age/11-soin-antirides-anti-age-lifting-naturel-50-ml-7640148480161.html');
// Webbax - Redirection 301
$prefix = '/';
foreach($urls as $url){
	if($prefix.$url[0]==$_SERVER['REQUEST_URI']){
		header('Status: 301 Moved Permanently', false,301);
		header('Location: http://www.monsite.ch/'.$url[1]);
		exit();
	}
}

A nouveau Excel est vraiment indispensable, car il peut aussi servir à générer directement le PHP qu’on aura besoin, typiquement dans le cas présent je construis déjà un array dynamique en PHP qu’il me suffira ensuite de coller dans mon fichier de configuration.

La génération de redirections via PHP est aussi une alternative envisageable.

Conserver des urls logiques

Si vous migrez d’une plateforme vers une autre… il faudra penser à migrer les urls correctement. Par exemple si votre url était http://www.monsite.ch?product=123 et que sur votre nouveau site le lien s’appelle http://www.monsite.ch/1-montain-bike, il sera difficile, voir impossible de définir une règle de correspondance comme on l’a fait précédemment en exportant les données de la base sous Excel (donc pensez-y avant la migration).

Le module d’Olivier Clémence

2018 : Je profite de faire une petite mise à jour du billet en profitant de vous mentionner qu’un collègue « Olivier Clémence » dispose aussi d’un module Prestashop de redirection 301 pour votre boutique. C’est donc aussi une alternative possible, si vous n’avez pas envie de vous amuser à modifier du code manuellement.

Bilan

Ici je vous donne une ébauche de concept… justement avec Infomaniak je n’arrivais pas à faire fonctionner la redirection 301…. et la cause c’était le « ? » qui faisait sauter le comportement du .htaccess. Les redirections 301 prennent du temps à être mis en oeuvre, donc réfléchissez bien avant de vous lancer dans des migrations / déplacement de boutique, afin que ça puisse bien se passer avec le moins de perte possible pour votre référencement.

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (1 votes, moyenne : 5,00 sur 5)
Loading...

4 commentaires sur “Prestashop et les redirections 301”

  1. Hello, il est rare que le htaccess ne fonctionne pas. D’ailleurs, je passe en premier lieu par ce fichier plutôt que de mettre en place des 301 depuis le code, que ce soit via ton astucieux bout de code ou via un module. D’ailleurs, je crois que j’avais mis ça dans le FrontController plutôt que dans le fichier de config. Et pour finir, j’utilise ce module : https://addons.prestashop.com/fr/url-redirections/11399-redirections-301-302-303-des-urls-et-404-seo.html
    Il y a plus de 200 avis, une bonne note et a été développé par une agence espagnole maintenant reconnue pour sa qualité de code.

    1. Hello,

      De mon côté je confirme aussi la praticité du module de « Linea Grafica », j’aime bien aussi le mettre en place, comme ça le client peut-être autonome et gérer lui-même ses redirections sans forcément recourir à une modification manuelle du fichier .htaccess.

      Merci pour ton retour et à bientôt !

Laisser un commentaire

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