何らかの理由で、私はこれを正しくできないようです。こことApache Webサイトで多くの例を見てきました。 bothHTTPandHTTPSでexample.comの代わりにwww.example.com
を強制しようとしていますが、強制的に使用しようとはしていませんHTTPではなくHTTPSの。
次のコードはすべてのHTTPS接続で機能するようですが、HTTP接続のリダイレクトは発生しません。
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301]
私は同じ問題を抱えていましたが、以下で解決しました。
RewriteEngine On
RewriteCond %{HTTP_Host} !^$
RewriteCond %{HTTP_Host} ^example\.com [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [R=301,L]
あなたの解決策は正しいようです。ただし、実行できるチェックポイントをいくつか提供します。
コード:
RewriteEngine On
RewriteCond %{HTTPS} = on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} != on
RewriteCond %{HTTP_Host} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]