Redirection 301 après migration d’une boutique Oscommerce vers Prestashop

Je travaille actuellement sur la migration vers Prestashop d’une boutique réalisée avec Oscommerce. Pour la migration aucun problème le module oscommerce to prestashop réalisé par Presto Changeo s’occupe de tout, en quelques minutes c’est fait. Par contre si vous désirez conserver le référencement de votre site c’est une autre histoire.

Tout d’abord la redirection des fiches produits est assez simple à mettre en oeuvre.

Voici ce que vous devez mettre dans votre fichier .htaccess:



#les produits
RewriteRule ^[a-zA-Z0-9-]*p-([0-9]+)\.html$ /product.php?id_product=$1 [R=301]


Au tour des catégories maintenant, là c’est plus compliqué. En effet, lors de l’importation l’ID des catégories sous Prestashop diffère de celui d’origine sous Oscommerce. Pourquoi ? Tout simplement parce que Prestashop utilise une catégorie mère « home », ce qui a pour résultat d’incrémenter de 1 l’ID de toutes les catégories.

Par conséquent la redirection ne peut pas se faire simplement avec un fichier htaccess.

Il faut d’abord créer un fichier « redirect_cat.php » et y insérer le code suivant:



if(is_numeric($_GET['id_category'])) {
$psCatId=$_GET['id_category']+1;
}
else {
header("Status: 404 Not Found");
exit();
}

$url="http://".$_SERVER['HTTP_HOST']."/category.php?id_category=".$psCatId;
header("Status: 301 Moved Permanently", false, 301);
header("Location: ".$url);
exit();


Ensuite dans votre fichier .htaccess il faut rediriger les anciennes url vers ce fichier tout en récupérant l’id de la catégorie (sous oscommerce).



#3 niveau
RewriteRule ^[a-zA-Z0-9-]*c-[0-9]+_[0-9]+_([0-9]+)\.html$ /redirect_cat.php?id_category=$1 [R=301]

#2 niveaux
RewriteRule ^[a-zA-Z0-9-]*c-[0-9]+_([0-9]+)\.html$ /redirect_cat.php?id_category=$1 [R=301]

#1 niveau
RewriteRule ^[a-zA-Z0-9-]*c-([0-9]+)\.html$ /redirect_cat.php?id_category=$1 [R=301]


Voila désormais les redirections des catégories fonctionnent.

A noter:

J’ai supposé que les url de vos fiches produit sous Oscommerce étaient de la forme suivante:



le-nom-de-mon-produit-p-25.html

- "p" signifie produit
- "25" est l'ID du produit


Pour les catégories je n’avais que 3 niveaux à gérer je ne me suis donc pas pris la tête à faire une règle qui gère l’ensemble des niveaux. A vous de la créer,  n’hésitez pas à venir la poster dans les commentaires :).

L’url supposée d’une catégorie est la suivante:



nom-de-ma-categorie-c-120-25-36.html

- "c" signifie catégorie
- "120" est l'ID de la catégorie de premier niveau
- "25" est l'ID de la catégorie de second niveau
- "36" est l'ID de la catégorie de troisième niveau


Sachez que vous n’avez pas besoin de récupérer les ID de toutes les catégories mais seulement celui de la dernière car Prestashop est capable de remonter l’ensemble des catégories tout seul.

*** EDIT 07/05/2015 ****
j’ai eu le même travail à faire récemment mais cette fois pour une version 1.6.
La démarche est exactement la même la seule différence est qu’il faut rediriger les produits comme ceci:


#les produits
RewriteRule ^[a-zA-Z0-9-]*p-([0-9]+)\.html$ /index.php?id_product=$1&controller=product [R=301]

Quelques erreurs à éviter:
– Vos règles de ré-écriture pour oscommerce doivent se trouver avant les règles écrites automatiquement par Prestashop
– Il ne faut pas oublier d’activer l’url rewriting avant de placer vos règles
– Dans certains cas le transfert sur le ftp fait disparaître les sauts de ligne. Transférez vos fichiers en mode binaire de préférence.

[su_note note_color= »#17B6BC » text_color= »#FFFFFF » radius= »11″ class= »tips1″]Si vous désirez faire la migration de votre site boutique vers Prestashop en toute sécurité, je vous invite à contacter l’agence Itis Commerce.[/su_note]

Laisser un commentaire

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