Jump to content

Multiboutique, multilangue et redirection selon langue du navigateur


Recommended Posts

Bonjour à tous,

 

Je suis actuellement en train de développer un Prestashop pour un client de ma boîte. Il s'agit d'un multiboutique sous PS1.6, décliné en français (une boutique en /fr/, par défaut) et en anglais (une boutique en /en/).

 

Mon but est de rediriger automatiquement les clients non-français vers le site /en/ (en repérant la langue du navigateur).

J'ai bien coché l'option sur Prestashop dans "Localisation > Localisation > Définir la langue depuis la langue du navigateur", ainsi que "Définir le pays par défaut depuis la langue du navigateur", mais ça ne fonctionne malheureusement pas...

 

Comme la boutique /fr/ est définie comme celle par défaut, l'utilisateur est redirigé vers cette boutique quoi qu'il arrive.

 

Avez-vous des solutions ?

Link to comment
Share on other sites

si tu es déjà sur une page du front-office, tu as un cookie qui contient déjà un choix de langue. pour tester tu doit impérativement effacer tes cookies et cliquer sur l'url sans la langue

 

En effet, j'avais déjà testé de supprimer les cookies (depuis l'inspecteur Chrome et en utilisant un plugin Language Switcher).

À partir de là, je me connecte sur l'adresse en .com (sans /fr/ ou /en/) mais la redirection sur le /fr/ se fait quand même.

 

J'aimerai pouvoir éviter un maximum de scripter une redirection moi-même si Prestashop est capable nativement...

Link to comment
Share on other sites

Merci pour ta réponse doekia.

 

J'ai bien vidé les cookies, relancé Chrome, passé le user agent en anglais, sans succès.

Des clients de la boutique habitant hors de France ont également fait la remarque.

 

Voici une url vers la boutique en question : https://teatap.com

Link to comment
Share on other sites

Il y a une redirection qui intervient et renvoi sur /fr/ avant prestashop

Connecting to teatap.com (teatap.com)|46.105.57.169|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Date: Fri, 02 Jun 2017 08:55:01 GMT
  Content-Type: text/html; charset=utf-8
  Transfer-Encoding: chunked
  Server: Apache
  X-Powered-By: PHP/5.6.30
  Vary: Host,Accept-Encoding
  Location: http://teatap.com/fr/
  Set-Cookie: SERVERID585=2020232|WTEn6|WTEn6; path=/
  X-IPLB-Instance: 10295
Location: http://teatap.com/fr/ [following]

Quelque chose que tu aurait ajouté dans le .htaccess?

Link to comment
Share on other sites

@doekia
 
Je laisse Prestashop générer le .htaccess tout seul, je ne me souviens pas y avoir touché. Voici le contenu du fichier :
 

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums
 
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
 
RewriteEngine on
 
 
#Domain: teatap.com
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]
 
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
 
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^fr$ /fr/ [L,R]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^fr/(.*) /$1 [L]
 
# Images
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
 
 
#Domain: teatap.com
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]
 
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
 
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^en$ /en/ [L,R]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^en/(.*) /$1 [L]
 
# Images
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
 
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^teatap.com$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
 
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|svg)$">
Header add Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
 
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>
 
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype
</IfModule>
</IfModule>
 
#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404
 
# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
Link to comment
Share on other sites

J'avais zappé que tu était en multishop.

En multishop, c'est toujours la boutique par défaut qui arrive.

 

Pourquoi es-tu en multishop?

 

Ah... C'est bien ce que je pensais. Du coup, faire une redirection devient assez tordu. As-tu une idée de comment je pourrai procéder ?

 

Ça nous semblait logique de base de fonctionner en multiboutique pour deux langues, mais maintenant ça nous pose plutôt soucis, puisqu'en plus d'avoir des soucis de redirection, notre base client n'est pas partagée entre les deux stores, et notre client souhaite que ça le soit. C'est notre premier Prestashop, du coup on savait qu'il y aurait des soucis, mais maintenant qu'on est parti sur du multiboutique, ça me semble très compliqué de revenir en arrière, surtout que l'activité du site a déjà commencé.

Link to comment
Share on other sites

Il y a un peu de travail pour ramener le tout en mono-boutique mais c'est tout à fait faisable.

En gros, ramener tous les clients sous le même id_shop

Supprimer le suffixe /fr/ du shop 1, activer la langue en ... se qui remet la langue dans les urls (donc pas de changement SEO)

 

J'ai bien dit en gros hein. Ne commence pas à cliquer comme un geotrouvetout, fait plein de test avant.

Eventuellement PM moi si tu veux qu'éventuellement je te chiffre ça

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...