(modifié le 8 janvier 2023 à 19:15)

Pour passer un site web de http vers https il est important de ne pas se rater.

La méthode que je préfère est celle du htaccess, mais j'ai rencontré quelques soucis pour la mise en place. Si vous êtes aussi client YulPa cela devrait vous intéresser.

Pourquoi ?

L'architecture de l'hébergement conditionne les directives Apache à utiliser.

Dans mon cas j'avais appliqué une configuration que j'utilise depuis des années un peu partout, mais j'avais systématiquement l'erreur ERR_TOO_MANY_REDIRECTS avec un moteur basé sur chromium, sinon "la page n'est pas redirigée correctement" avec Firefox.

Avec un loadbalancing (YulPa)

Attention : cela concerne uniquement les anciennes offres d'hébergement 2016/2017, si vous êtes sur offre plus récente ce guide ne vous sera pas utile, utilisez les directives classiques (voir plus bas)/

YulPa utilise un méchanisme de répartition de charge (load balancers) avec un frontal qui oriente les pages web vers d'autres serveurs. Ceci afin de répartir au mieux les pics de charge, cette infrastructure est très fréquente chez les hébergeurs mutualisés.

Voici la directive qui fonctionne :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Le répartiteur de charge transmet la requête en interne, comme le fait un reverse proxy et du coup les en-têtes sont un peu différentes.

Ce qui ne fonctionne pas en loadbalancing

Voici ce qui me donnait une redirection infinie (loop redirect) :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} !=on
</IfModule>

ou :

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
</IfModule>

D'ailleurs la ligne contenant le "[OR]" est facultative voir inutile, mais c'est bien celle d'en dessous qui posait problème. Elle n'était jamais intérprétée et donc le https redirige vers https... sans fin.

Et voici la directive qui fonctionne avec et sans répartiteur de charge

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Note 1 : il n'y a pas de "[OR]" qui lie les 2 conditions, c'est voulu. Ne l'ajoutez pas sinon c'est boucle de redirection (car l'une des deux sera toujours vraie puisque non reconnue).

Note 2 : oui c'est bien la bonne syntaxe "%{HTTPS} off" et non pas "%{HTTPS} =off"

Avec iWal

Si vous préférez ne pas mettre les mains là dedans il est possible de le faire en 2 clics chez YulPa dans le panel iWal.

Allez dans :

Publication web > Domaines web > <votre domaine> > Configuration SSL > Mode de publication

A vous de choisir l'option qui vous convient le mieux.

Quelques outils

Pour vérifier que votre redirection fonctionne bien je vous conseille le site redirect-checker.org qui permet de visualiser toutes les redirections successives.

Et si vous cherchez des directives pour augmenter le niveau de sécurité de votre site web  : the ultimate .htaccess file, mais attention à ne pas trop surcharger votre fichier de directives, sous peine d'avoir des ralentissements ou pire des erreurs 500...

En espérant que ceci vous soit utile, nombreux sont les hébergeurs à utiliser des proxy / load balancers.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter