Je veux une règle de réécriture qui redirige tout vers https://
ETwww
.
Par exemple, http://example.com
devrait aller à https://www.example.com
C'est ce que j'ai
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_Host} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
J'ai trouvé la solution.
Sans HSTS (redirection unique):
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Avec HSTS (double redirection):
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Vos conditions sont implicitement AND et votre deuxième condition sera toujours vraie (sauf si vous avez d'autres domaines), de sorte que vos règles actuelles ne redirigeront que le trafic non SSL.
Vous devez OR
les conditions et annuler la www
(deuxième) condition:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Si le SERVER_PORT
n’est pas 443 (c’est-à-dire qu’il n’est pas HTTPS) o l’hôte ne commence pas par www.
(c’est-à-dire que vous accédez au domaine nu), puis redirigez-le vers le URL canonique.
Toutefois, le fait que cela redirige https://example.com
vers https://www.example.com
dépendra de votre certificat de sécurité. (Votre site doit être accessible à la fois sur www et sur www sur SSL pour que la redirection .htaccess se déclenche.)
Cela utilisera à la fois www ou non www. Si vous essayez d'ouvrir un lien avec www, puis redirigez l'URL vers https avec www.
Exemple:
http://domain.com
redirection vershttps://domain.com
ou Si vous essayez d'ouvrir un lien avec non-www, redirigez l'URL vers https avec non-www
Exemple:
http://www.domain.com
redirection vershttps://www.domain.com
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]