Jump to content
stoff

Redirection https vers http vers https (si www.)

Recommended Posts

Bonjour,

Suite à l'activation du mode SSL sur une boutique prestashop (1.6), je découvre une boucle de redirection bizarre.

Mon domaine déclaré est www.mondomaine.fr (non ssl et ssl) // forcer le ssl sur tout le site ok.
Le certificat SSL est bien installé, https://www.mondomaine.fr fonctionne parfaitement,

Cependant, si je tente d'accéder à https://mondomaine.fr , Prestashop me redirige tout d'abord vers http://www.mondomaine.fr avant de me rediriger vers https://www.mondomaine.fr.

J'ai tout d'abord pensé à un problème côté serveur (htaccess/vhost etc...), problème écarté en faisant un echo "Hello world"; exit(); en début de fichier index.php (je ne suis alors plus redirigé -> c'est donc le Core qui gère la redirection).

Après une dizaine de vérifications, j'ai l'impression que TOUTES les boutiques presta dont l'url est du type www.domaine.fr sont par défaut impactées par ce problème (1.6, 1.7 ...).

(je vous invite à tester ici : https://httpstatus.io/ en saisissant https://votredomaine.fr ,) si l'url de votre boutique est sous le schéma www.votredomaine.fr)

J'ai testé une modif en dur des fichiers class/tools.php (fonctions redirect redirectlink) en vain...

Quelqu'un aurait-il une piste/solution svp ?

 

Merci !

 

 

Edited by stoff (see edit history)

Share this post


Link to post
Share on other sites

Non, ne sont impactées que les boutiques/serveurs mal configurés

image.png.0ed8ee7ef0f4b493fc6221e340f1c1f3.png

Le ssl doit être activé sur toutes les pages et .htaccess regénéré

  • Like 1
  • Haha 1

Share this post


Link to post
Share on other sites

Merci pour ta réponse, j'édit mon premier message qui n'est visiblement pas assez clair, l'url que tu as testé n'est pas sous le même schéma (www.monnomdedomaine.fr)

Edited by stoff (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

je confirme ce soucis.

Si le domaine utilise le sous domaine www alors si on l'appel sans il est d'abord dirigé vers le bon domaine sans ssl puis en ssl.

5bc1c4ffa79e8_Screenshot_2018-10-13BulkURLHTTPStatusCodeHeaderRedirectCheckerhttpstatusio.png.630a75f60d7bac55dc9bf4fa48354a88.png

  • Like 1

Share this post


Link to post
Share on other sites

Oui ce "défaut" que vous mentionnez est ... normal si vous avez configuré vos redirection https sur le domaine demandé (cas courant des mises en place automatisé des hébergement)

Mais il vous suffit de configurer CORRECTEMENT votre redirection pour régler le problème (qui n'en est pas vraiment 1 sauf à avoir un parc d'url googlisé antérieures):

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule (.*) https://www.votre-domaine.tld/$1 [L,QSA,R=301]
  RewriteCond %{HTTP_HOST} !^www\.
  RewriteRule (.*) https://www.%{HTTP_HOST}$1 [L,QSA,R=301]
</IfModule>

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Merci pour ton retour,

Bien entendu en faisant une modif avant que le Core Prestashop se lance il est possible de patcher le comportement (cf ton code de rewrite, ou ceux pour valider le hstspreload), mais c'est pas du tout ce que je demande/cherche.

Si vous aviez pris le temps de lire CORRECTEMENT mon premier message, et d'éventuellement tester, vous auriez compris que je n'ai effectué "aucune configuration spéciale au niveau du serveur" et que pour moi le problème se trouve au niveau de Presta qui effectue lui même les redir :

Sans patch htaccess et avec un echo "Hello world"; exit(); au début du fichier index.php :

https://monnomdedomaine.fr --> 200
https://www.monnomdedomaine.fr --> 200
http://monnomdedomaine.fr --> 200
http://www.monnomdedomaine.fr --> 200

Sans patch htaccess et avec le fichier de base index.php :

https://monnomdedomaine.fr --> 301 -> http://www.monnomdedomaine.fr --> 301 --> https://www.monnomdedomaine.fr
https://www.monnomdedomaine.fr --> 200
http://monnomdedomaine.fr --> 301 -> http://www.monnomdedomaine.fr --> 301 --> https://www.monnomdedomaine.fr
http://www.monnomdedomaine.fr --> 301 --> https://www.monnomdedomaine.fr

Avec patch htaccess et avec le fichier de base index.php :

https://monnomdedomaine.fr --> 301 -> https://www.monnomdedomaine.fr
https://www.monnomdedomaine.fr --> 200
http://monnomdedomaine.fr --> 301 -> https://monnomdedomaine.fr --> 301 --> https://www.monnomdedomaine.fr
http://www.monnomdedomaine.fr --> 301 --> https://www.monnomdedomaine.fr

 

 

Share this post


Link to post
Share on other sites

Désolé, c'est vous qui ne comprenez pas. Et je ne vois pas ce que je pourrais tester, tu ne donne pas ton url

Vous devez procéder au redirections en dehors de prestashop. la solution n'est pas le saint graal de toute l'informatique.

Il implémente de fonctionnalité quand il peut (je ne parle pas de temps au sens développement, mais de temps au sens moment d'exécution) afin de résoudre des problèmes de configuration.

Le dispatcher sachant que vous être en https et ce pour sécuriser le plus rapidement possible renvoi vers le canal https

Plus tard dans l'exécution prestashop voit que le domaine canonical est www, il redirige dessus

Plus tard encore il verra que tel produit a telle url canonique et renverra sur celle-ci

 

Au final si vous entrez http://mondomain.fr/1-quelque-chose.html vous serez redirigé 3x si vous laissez Prestashop agir seul:

  1.  http => https
  2. mondomaine.fr => www.mondomaine.fr
  3. www.mondomaine.fr/1-quelquechose.html => www.mondomaine.fr/1-la-vrai-url-simplifie-du-produit-id1.html

De plus en fonction de votre hébergement il existe tout un éventail de technique mise en amont de Prestashop

Par exemple ici vous avez une redirection vers le non http anormale - elle est sûrement la résultante d'une redirection hoster (OVH?)

 

Le .htaccess ou le vhost sont les endroits privilégiés - hors section géré par prestashop -  pour rediriger correctement votre shop.

 

Enfin vous donnez une url fictive. Si vous mettiez une url exacte peut-être pourrions nous voir tous les problèmes liés et mieux vous aider

 

 

PS: Attention aux directives HSTS, et bien s'assurer de ne pas conflicter avec des directives forcées par l'hébergeur (OVH à nouveau?)

Share this post


Link to post
Share on other sites

@stoff

Finalement tu as raison il y a un bug. Dans classes/shop/Shop. Shop::initialize()

                $redirect_header = ($redirect_type == 1 ? 'Found' : 'Moved Permanently');
                header('HTTP/1.0 '.$redirect_code.' '.$redirect_header);
                header('Location: http://'.$url);

à remplacer par

                $redirect_header = ($redirect_type == 1 ? 'Found' : 'Moved Permanently');
                header('HTTP/1.0 '.$redirect_code.' '.$redirect_header);
                header('Location: '.(Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')?'https':'http').'://'.$url);

 

  • Thanks 2

Share this post


Link to post
Share on other sites

Il y a 2 lignes à changer:  361 et 429 (même code)

Share this post


Link to post
Share on other sites

Merci beaucoup @doekia.

(pour répondre à ton précédent message, mes boutiques impactées sont sur différents dédiés avec différentes config : apache/nginx, nginx, apache)

 

Share this post


Link to post
Share on other sites

Est-ce tes dédié qui assument les zone DNS? et la terminaison https?

Vraiment de vraies url permettraient de vite savoir si quelque chose d'autre peut impacter

Share this post


Link to post
Share on other sites

Oui pour les deux, ta correction solutionne bien le problème au niveau du Core, tout roule, merci !

 

Share this post


Link to post
Share on other sites

Cool, merci beaucoup pour la PR

Les devs l'ont déjà vue :-)

Share this post


Link to post
Share on other sites

Comme il ne s'agit ni d'une question critique ni d'une question de sécurité, elle ne sera certainement pas mise à jour dans la PS 1.6.

Edited by joseantgv (see edit history)

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More