web-dev-qa-db-ja.com

HTTPSとHTTPの両方でwwwサブドメインを強制するにはどうすればよいですか?

何らかの理由で、私はこれを正しくできないようです。ここと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]
1
Brian Perin

私は同じ問題を抱えていましたが、以下で解決しました。

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]
1
koljanep

あなたの解決策は正しいようです。ただし、実行できるチェックポイントをいくつか提供します。

  • HTTPとHTTPSは同じ物理ディレクトリを指すように設定されていますか?
  • サーバー障害について質問しようとしましたか?
  • 修飾子を使用して、次のように確認できますか

コード:

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]
1
Dave