Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

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.

Poster un Commentaire

23 Commentaires sur "Redirection 301 après migration d’une boutique Oscommerce vers Prestashop"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
Maxime
Invité
Maxime

Bonjour,

Je viens de tomber sur votre article et c’est exactement ce que je cherchais. Je suis moi même actuellement en pleine migration mais voila, vous indiquez des structure d’url différente de celle que j’ai moi, c’est à dire des urls de base sans url friendly du type:
http://www.monsite.com/catalog/index.php?cPath=1_22 pour les catégories
http://www.monsite.com/catalog/index.php?cPath=1_22_3333 pour les sous catégories
http://www.monsite.com/catalog/product_info.php?cPath=1_22_3333&products_id=44555 pour les produits

Pouvez-vous me dire s’il est possible de faire des redirections avec ce type d’url, faut-il que j’active sur prestashop les url simplifiée et faut-il renommer le dossier prestashop à l’identique de celui d’oscommerce dans mon cas ‘catalog’.

Dans l’attente de votre réponse,
Cordialement
Maxime

Maxime
Invité
Maxime

Merci pour votre réponse,

Qu’entendez vous par “modifier les règles de réécritures”.
si je procède pour la réécriture des produits comme ci

RewriteRule ^catalog/product_info.php?&products_id=([0-9]+)$\/product.php?id_product=$1 [R=301]

et pour les catégories et sous catégories
RewriteRule ^catalog/index.php?cPath=([0-9]+)$\/category.php?id_category=$+1 [R=301]

RewriteRule ^catalog/index.php?cPath=[0-9]+_([0-9]+)$\/category.php?id_category=$+1 [R=301]

Sachant que pour les catégories et sous catégories il faut ajouter (+1 ID)est ce que cela fonctionnerait?

Cordialement
Maxime

Maxime
Invité
Maxime

comment avez-vous fais alors pour rediriger les catégories et sous catégories ?

Cordialement
Maxime

Maxime
Invité
Maxime

Si je comprends bien, vous avez donc fais les redirections de produits via l’htaccess et les redirections des catégories et sous catégories via le fichier php ?

Maxime
Invité
Maxime

d’accord,

et toutes ces données (htaccess et redirect_cat.php) sont à mettre sous prestashop ou oscommerce ?

Maxime
Invité
Maxime

Merci pour votre aide,

je supposes que le fichier redirect_cat.php et le htacces doivent être à la racine de prestashop avec les fichiers tel que 404.php…

Cordialement
Maxime

Maxime
Invité
Maxime

pour modifier le htaccess faut-il passer par le backoffice (générateur) ou peut-on l’éditer manuellement ?

thierry
Invité
thierry

Bonjour,

comment c’est deroulé la migration avez vous eu des pertes dans le référencement ?

j’hesite en effet entre utilisé cette méthode, ou un module trouvé sur internet qui permet de réecrire les urls prestashop a la façon de oscommerce même si je trouve cela limité dans les évolutions et mises a jour.

merci

Thierry
Invité
Thierry

Bonjour,

Merci pour ces informations, je vais donc utiliser votre méthode et laisser tomber mon idée de réecrire les urls a la oscommerce.

Bruno
Invité
Bruno

Bonjour

Vous indiquez presta changeo (j’ai vu leur module il a l’air pas mal) $125 :<(
mais dans prestashop 1.5.3 il y a le module oscommerce to prestashop par defaut, par contre aucune configuration possible!
Savez vous si celui par defaut marche t-il? et comment?

Autrement si ce n'est pas le cas, celui de presta changeo fonctionne t-il avec la version de PS 1.5.3 et est-il vraiment facile pour la migration?
Supporte t-il 17921 clients, 19372 commandes , 20470 produits?

Merci pour votre aide :<)

Seb
Invité

Bonjour,

Sur le sujet du module de prestochangeo, mais j’ai eu pas mal de soucis avec. Très déçu, j’ai du faire quelques scripts pour modifier les données une fois l’import réalisé. C’était vers un prestashop 1.5

Seb
Invité

Re,

Merci pour cet article, il m’a servi de base. Cependant, il n’est plus tout à fait adapaté pour des redirections vers prestashop 1.5 ou 1.6

J’ai fait un article à ce propos, qui s’inspire très largement ce celui ci.

Encore merci.

L’article : http://blog.seb7.fr/redirections-oscommerce-prestashop

MAXIME
Invité
MAXIME

Bonjour, ce article m’a aidé a y voir plus clair. Cependant j’aurai une question :
Je souhaiterai migrer une boutique oscommerce vers prestashop 1.6 tout en gardant en plus des produits actuels, plusieurs centaines d’anciennes fiches produits (de produits qui ne sont plus dispo. à l’achat mais ou la fiche produit existe encore) car beaucoup sont bien reférencées.
Dois-je garder oscommerce à la racine du serveur et faire des redirections vers toutes les pages prestashop que je souhaite afficher ?

wpDiscuz