SSL証明書があるドメインに新しいサイトをセットアップしています。 DNSはすべて正しく構成されており、http://example.com
またはhttps://example.com
のいずれかのURLでサイトにアクセスできます。
現在、http://example.com
をhttps://example.com
に、http://www.example.com
をhttps://example.com
にリダイレクトしています。
ただし、.htaccess
ファイルを削除しても機能するため、それがどのように機能するのか本当に理解していません。 .htaccess
を変更して、私が遭遇したテクニックのいずれかを使用してリダイレクトすると、「リダイレクトが多すぎます」というエラーが表示されます。私が理解していない何かが起こっているに違いない。
http://example.com/anything
をhttps://example.com/anything
にリダイレクトするのが理想的です
何か案は?
私のサーバーはCentOS 6.6を使用しています。 「uname -r」からの出力:
2.6.32-504.12.2.el6.x86_64
必要に応じて詳細情報を提供できます。
「リダイレクトが多すぎる」原因となった.htaccessコードの例を追加しました。
RewriteCond %{HTTP_Host} ^example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
Webアプリケーション(つまり、WordPress-コメントで言及)が既に適切なHTTPからHTTPSおよびwwwからwww以外へのリダイレクトを発行している可能性が非常に高いです。ただし、.htaccess
を使用する方が間違いなく効率的です * 1HSTS の実装を計画している場合、Webアプリケーションが正しいリダイレクトを発行していない可能性があります。
(* 1-メインサーバーの設定を使用することをお勧めしますが。)
「リダイレクトが多すぎる」原因となった.htaccessコードの例を追加しました。
RewriteCond %{HTTP_Host} ^example.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
これは、HTTPからHTTPSへのリダイレクトではなく(実際、何でもありません)、リダイレクトループ(つまり、「リダイレクトが多すぎます」ブラウザーエラー)になります。基本的に、要求されたホストがexample.com
の場合、example.com
にリダイレクトされます(プロトコルに関係なく)。したがって、それ自体にリダイレクトします。
コメントで述べたように、cPanel「リダイレクト」インターフェースを使用してHTTPからHTTPSへのリダイレクトを実装することはできません。 cPanelインターフェイスを使用して、非常に単純なリダイレクトのみを実行できます。cPanelインターフェイスは、完全ではありませんが、警告がないわけではありません。 WordPressを使用している場合は、.htaccess
ファイルを手動で編集してcPanelを使用して単純なリダイレクトを構成することさえできません。 (cPanelは常に.htaccess
ファイルの最後にリダイレクトコードを追加します。これは、特にWordPressフロントコントローラーの後にあります。したがって、ほとんどの場合、リダイレクトディレクティブは処理されません。- cPanelドキュメントはこれを通知します 。)
(mod_rewriteを使用して).htaccess
ファイルに追加するリダイレクトディレクティブは、WordPressフロントコントローラーのbeforeに移動する必要があります、つまり.htaccess
ファイルの上部。
HSTS の実装を計画している場合、HTTPからHTTPSへのリダイレクトは同じHostにリダイレクトする必要があるため、HTTP HTTPSへの変換は、標準のwww/non-wwwリダイレクトの前に(そして別の)行う必要があります。このシナリオでの適切なHTTPからHTTPSへのリダイレクトについては、@ jcanepaの回答を参照してください。その後、wwwからwww以外へのリダイレクト(正規のホスト名のように見える)を使用してこれを実行できます。例えば:
# www to non-www redirect only
# (NB: This must go AFTER the HTTP to HTTPS redirect if implementing HSTS)
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
ただし、 HSTS を実装するつもりがない場合は、代わりにHTTPからHTTPSおよびwwwから非wwwへの標準リダイレクトを単一のリダイレクトに結合できます(潜在的な2番目のリダイレクトを防止します)。例えば:
RewriteEngine On
# HTTP to HTTPS and www to non-www
# (NB: Not suitable for HSTS)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www\. [NC]
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
Apacheの場合、サイトのルートに.htaccessを実装することをお勧めします。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]