すべてをhttps://
ANDwww
にリダイレクトする書き換えルールが必要です。
たとえば、http://example.com
はhttps://www.example.com
に移動する必要があります
これは私が持っているものです:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteCond %{HTTP_Host} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ "https\:\/\/www\.example\.com\/$1" [R=301,L]
私は解決策を見つけました。
HSTS なし(シングルリダイレクト):
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]
HSTS (二重リダイレクト)の場合:
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]
条件は暗黙的にANDされ、2番目の条件は(他のドメインがない限り)常に真になるため、現在のルールは非SSLトラフィックのみをリダイレクトします。
OR
条件をwww
(2番目)条件を否定する必要があります。
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
SERVER_PORT
が443でない(つまりHTTPSではない)またはの場合、ホストはwww.
(つまり、ベアドメインにアクセスしている)で始まっていない正規URL。
ただし、これがhttps://example.com
をhttps://www.example.com
にリダイレクトするかどうかは、セキュリティ証明書によって異なります。 (.htaccessリダイレクトをトリガーするには、SSL経由でwwwとnon-wwwの両方からサイトにアクセスできる必要があります。)
これは、wwwまたはwww以外の両方に使用されます。wwwでリンクを開こうとすると、wwwでhttpsにURLリダイレクトされます。
例:
http://domain.com
https://domain.com
へのリダイレクト
または、www以外でリンクを開こうとすると、www以外でhttpsにURLリダイレクトされます
例:
http://www.domain.com
https://www.domain.com
へのリダイレクト
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]