Jump to content

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)
Link to comment
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
Link to comment
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

 

 

Link to comment
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?)

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