J'essaie de configurer correctement HSTS sur mon site Web et il fonctionne actuellement à moitié, je dois trouver le moyen de redirection correct: http://www.example.com
vers https://www.example.com
et finalement vers https://example.com
.
En fait, le site Web contient une redirection par version d'URL:
http://www.example.com
301 rediriger vers https://example.com/
http://example.com
301 rediriger vers https://example.com/
https://www.example.com
301 rediriger vers https://example.com/
Je dois maintenant ajuster la redirection via mon .htaccess
pour obtenir le résultat suivant:
http://www.example.com
https://www.example.com
https://example.com
"J'ai essayé plusieurs fois, mais je finis toujours par fermer le site Web. Pourriez-vous s'il vous plaît m'aider à résoudre ce problème?
Désolé les gars, j'ai oublié de mentionner quelque chose d'important: j'ai déjà installé HSTS et cela fonctionne sur example.com
mais lorsque je le teste en tant que www.example.com
, j'obtiens "Erreur: sous-domaine, erreur: aucun en-tête HSTS, erreur: HTTP ne redirige pas vers HTTPS" Je le teste avec hstspreload.org
Donc, l'URL canonique est https://example.com/...
. (Vous semblez décrire une redirection intermédiaire inutile? Vous ne devez rediriger que vers l'URL finale canonique, aucune autre opération n'est nécessaire.)
Ceci est juste une redirection HTTP vers HTTPS standard.
Vous pouvez le faire en utilisant mod_rewrite en haut de votre fichier .htaccess
. Par exemple:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\.
RewriteRule (.*) https://example.com/$1 [R=301,L]
Ce qui est dit ci-dessus est ... si la demande concerne un sous-domaine HTTP ou www, alors la redirection 301 vers l'URL canonique.
Cependant, vous devriez le tester avec une redirection 302 (temporaire) avant vous implémentez HSTS. Si vous avez déjà implémenté HSTS et visité l'URL HTTPS, le navigateur émettra automatiquement la demande mise à niveau et vous ne verrez jamais la redirection (ce qui est tout l'intérêt de HSTS).
UPDATE:
Erreur: HTTP ne redirige pas vers HTTPS
http://www.example.com
(HTTP) redirige vershttps://example.com/
. La première redirection à partir dehttp://example.com
devrait être vers une page sécurisée sur le même hôte (https://www.example.com
) "
Ah, il semblerait que pour satisfaire aux Conditions de soumission pour figurer sur la liste de préchargement HSTS vous devez d'abord "Rediriger de HTTP vers HTTPS sur le même hôte". (Cela semblerait toutefois aller à l’encontre des intuitions en ce qui concerne le référencement et l’expérience utilisateur.)
Pour diviser la redirection en deux et rediriger vers HTTPS premier, avant la redirection www canonique, procédez comme suit:
RewriteEngine On
// 1. Redirect to HTTP to HTTPS on the same Host
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]
// 2. Canonical redirect from www to non-www
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule (.*) https://example.com/$1 [R=301,L]
Pour plus de détails sur l’émission de redirections canoniques pour la liste de préchargement HSTS, voir ma réponse à la question suivante sur la pile Pro Webmasters:
https://webmasters.stackexchange.com/questions/112263/hsts-preload-section-on-htaccess