J'ai vu beaucoup de personnes souffrir de boucles de redirection en essayant d'utiliser des fichiers .htaccess pour passer de http à https. Et il y a BEAUCOUP de réponses différentes sur la façon de résoudre ce problème. Certaines personnes disent :
ReWriteCond %{SERVER_PORT} 80
OR
RewriteCond %{HTTPS} off
OR
RewriteCond %{HTTPS} !on
OR (as above)
RewriteCond %{HTTP:X-Forwarded-Proto} !https
OR EVEN
RewriteCond %{HTTP:X-Forwarded-SSL} =off
mais aucune d'entre elles n'a fonctionné pour moi. J'ai fini par découvrir la vérité sous-jacente, à savoir que les différents serveurs sont configurés de différentes manières et qu'ils fournissent tous différentes variables de serveur.
Si aucune de ces méthodes ne fonctionne pour vous, l'astuce consiste à utiliser PHP pour trouver les variables env que votre serveur particulier vous envoie lorsque vous accédez à une page http, et les variables env qu'il vous envoie lorsque vous accédez à une page https, puis vous pouvez utiliser cette variable pour effectuer la redirection. Il suffit de créer un fichier PHP (tel que showphpvars.php) sur votre serveur avec ce code :
<?php phpinfo() ?>
et ensuite le visualiser avec un navigateur. Trouvez la section des variables avec _SERVER["HTTP_HOST" (etc)], et cherchez celle qui change pour http et https. La mienne s'est avérée être une variable appelée SSL qui était définie à 1 lors de l'utilisation de https, et pas du tout définie lors de l'utilisation de http.
J'ai utilisé cette variable pour rediriger vers https avec PHP, ce qui est tellement plus agréable que d'utiliser htaccess, mais je pense que toutes les variables _SERVER peuvent aussi être accédées en utilisant htaccess, si vous voulez continuer à l'utiliser. Utilisez simplement le nom entre guillemets, sans le bit _SERVER[""] que PHP ajoute.