Le nec plus ultra pour faire du e-commerce à l’international est d’avoir des urls étrangères pour chaque langue étrangère. Mais ce n’est pas suffisant. Il faut aussi associer une ip étrangère à chaque domaine (par exemple, une ip anglaise pour le domaine anglais dans le cas de la langue anglaise). Dans Prestashop, le recours au multi-boutique est LA solution.
Mais là apparait un soucis de taille : toutes les langues sont disponibles dans toutes les boutiques, et en plus elles sont toutes indépendantes (comprenez : si vous modifiez le français de la boutique anglaise, cela n’affectera pas le français de la boutique française). Voyons comment parvenir à ne garder qu’une langue par boutique.
Installation
La première étape est simple :
- activer le multi-boutique dans
Configurer > Paramètres de la boutique > Paramètres Généraux
- ensuite on crée au moins une boutique supplémentaire avec une url complètement différente
Et voilà le multi-boutique est actif.
Une langue par boutique
Supposons que nous ayons deux langues installées (anglais et français) et deux boutique, A étant la boutique française (url: http://www.boutiqueA.fr) et B la boutique anglaise (url: http://www.boutiqueB.en). Comme je le disais plus haut, les deux langues sont disponibles dans les deux boutiques, à savoir qu’un produit peut s’afficher :
- en français dans la boutique française (http://www.boutiqueA.fr/fr/produit)
- en anglais dans la boutique française (http://www.boutiqueA.fr/en/product)
- en français dans la boutique anglaise (http://www.boutiqueB.en/fr/product)
- en anglais dans la boutique anglaise (http://www.boutiqueB.en/en/product)
Ce qui va donner 4 urls différentes là où on en veut que 2. Pas idéal pour le référencement ! La solution est simple, il suffit de rediriger les pages (dans un .htaccess) anglaises de la boutique française vers la boutique anglaise (autrement dit, les pages anglaises de la boutique A vers la boutique B) :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(boutiqueA.fr)$
RewriteRule ^en/(.*)$ http://www.boutiqueB.en/en/$1 [L,R=301]
</IfModule>
Et on fait le même travail avec les pages françaises : on rediriger les pages françaises de la boutique anglaise vers la boutique françaises (autrement dit, les pages françaises de la boutique B vers la boutique A) :
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect english pages
RewriteCond %{HTTP_HOST} ^www.(boutiqueA.fr)$
RewriteRule ^en/(.*)$ http://www.boutiqueB.en/en/$1 [L,R=301]
# Redirect french pages
RewriteCond %{HTTP_HOST} ^www.(boutiqueB.en)$
RewriteRule ^fr/(.*)$ http://www.boutiqueA.fr/fr/$1 [L,R=301]
</IfModule>
Une 3ème boutique
Quid d’une troisième boutique ? Ajoutons la boutique C, en italien. On comprend mieux le rôle des parenthèses :
<IfModule mod_rewrite.c>
RewriteEngine on
# Redirect english pages
RewriteCond %{HTTP_HOST} ^www.(boutiqueA.fr|boutiqueC.it)$
RewriteRule ^en/(.*)$ http://www.boutiqueB.en/en/$1 [L,R=301]
# Redirect french pages
RewriteCond %{HTTP_HOST} ^www.(boutiqueB.en|boutiqueC.it)$
RewriteRule ^fr/(.*)$ http://www.boutiqueA.fr/fr/$1 [L,R=301]
# Redirect italian pages
RewriteCond %{HTTP_HOST} ^www.(boutiqueB.en|boutiqueA.fr)$
RewriteRule ^it/(.*)$ http://www.boutiqueC.it/it/$1 [L,R=301]
</IfModule>
Langue par défaut
Il nous reste un dernier réglage : nous voulons que chaque boutique affiche sa langue par défaut :
- le français pour la boutique française
- l’anglais pour la boutique anglaise
- l’italien pour la boutique italienne
Prestashop a la mauvaise manie de détecter la langue du navigateur et de servir cette langue. Un petit tour dans International > Localisation
section paramètres
Commentaires récents