Je cherche un moyen de forcer SSL et www
.
J'ai été en mesure de forcer les deux séparément mais ensemble, je continue à me heurter à des problèmes de redirection. Le code suivant fonctionne lorsque vous manipulez une URL dans ce format: http://example.com
et qu'il redirige correctement vers https://www.example.com
, mais lorsque l'URL entrante est https://example.com
, il ne sera pas transmis à https://www.example.com
- Aucune suggestion. ?
EDIT: il faut aussi envoyer http://www.example.com
à https://www.example.com
.
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_Host} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
La première ligne est utilisée pour empêcher la réécriture des URL internes. Cela pourrait entraîner l'affichage de pages différentes, je l'ai donc supprimée.
Si l'hôte est example.com
ou n'est pas demandé via HTTPS, il sera réécrit en https://example.com/
. C'est-à-dire qu'il réécrit http://example.com
, http://www.example.com
et https://example.com
en https://www.example.com
en une seule action.
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Documentation sur mod_rewrite pour Apache 2.2 .
Si vous avez des sous-domaines tels que forum.example.com
, la première règle doit être telle quelle. Sinon, vous pouvez également faire une correspondance négative avec www.example.com
.
La troisième ligne ne doit-elle pas être:
RewriteCond %{HTTP_Host} ^example\.com$
Essaye ça:
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_Host} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Je viens de mettre cela en œuvre pour mon site. Fonctionne comme un charme! Ajouté en haut de mon fichier .htaccess. Redirige toutes les occurrences de personnes tapant www ou non www, http ou https.
# BEGIN HTTPS Redirect
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
# END HTTPS Redirect
J'ai testé toutes les suggestions données ci-dessus, mais aucune ne couvrait tout le scénario.
Je voulais que tous les visiteurs aillent à https://www.example1.com/
Certains des codes fournis par d'autres utilisateurs ont tenté de créer des URL non sécurisées et/ou non www vers https://www.example1.com/
, mais aucun d'entre eux ne couvrait https://example1.com
d'être également converti en "www".
Mon site Web est hébergé chez GoDaddy, au cas où cela ferait une différence.
C'est le code qui a fonctionné pour moi:
RewriteEngine On
RewriteCond %{HTTP_Host} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example1.com/$1 [L,R=301]
La dernière ligne pourrait aussi être:
RewriteRule ^(.*)$ https://www.example1.com/$1 [R,L]
Mais j'ai utilisé le code "301" pour envoyer le message " déplacé de façon permanente " dans l'espoir que Google et peut-être d'autres moteurs de recherche mettront à jour d'anciens liens.
Vous pouvez également utiliser les lignes suivantes que j’utilise et travailler parfaitement.
(Supprimez le haut RewriteCond si vous n'utilisez pas CloudFlare)
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=302]