訪問者がWebサイトを見られなくなってしまうリダイレクトループ(リダイレクトが多すぎる)エラーを解決します。
概要
リダイレクトループエラーには、典型的な原因が二つあります。
- オリジンWebサーバーの設定と互換性のあるCloudflare SSLオプション、そして
- Page Ruleの設定ミス。
リダイレクトループエラーが発生した時に、次のようなエラーメッセージがブラウダで表示されます。
- ページが正しくリダイレクトされません
- ERR_TOO_MANY_REDIRECTS
オリジンWebサーバーと互換性のあるCloudflare SSLオプション
最も一般的なリダイレクトループの原因として、オリジンWebサーバーが
- 実行するリダイレクトと、
- オリジンが実行するリダイレクトと互換性のあるCloudflare SSLオプションの組み合わせがあります。
原因
Cloudflare SSL/TLSアプリの「概要」タブでFlexible SSL暗号化モードが、HTTPSを経由して、ブラウザとCloudflareネットワーク間のトラフィックを暗号化します。しかし、Flexible SSL が有効化されている場合、CloudflareはHTTP経由でオリジンWebサーバーに暗号を解読するようにリクエストを送信します。Flexible SSLを使用する際に、オリジンWebサーバーが全てのHTTPリクエストをHTTPSにリダイレクトするように設定されている場合、リダイレクトループが発生します。
リダイレクトループは、Full またはFull(strict) SSLオプションを使用する際も発生することがあります。唯一の違いは、オリジンWebサーバーがHTTPSリクエストをHTTPにリダイレクトする場合、CloudflareがHTTPS経由でオリジンWebサーバーに連絡をすると、リダイレクトループが発生します。
解決方法
次の方法を一つ使って、リダイレクトループを解決してください。
1. (推奨) HTTPSからHTTPへのリダイレクトと、HTTPからHTTPSへのリダイレクトをオリジンWebサーバー設定から削除します。例:
- Apache - RewriteRules(書き換えルール)
- nginx - Rewrite directives(書き換えディレクティブ)と 301 return directives(301リターンディレクティブ)
2. SSL/TLS アプリ「概要」タブで、CloudflareSSLオプションを更新します。
- 現在Flexibleに設定されている場合、オリジンWebサーバーに設定済みのSSL証明書がある場合、Fullに更新します。
- (非推奨)現在Fullに設定されている場合、Flexibleに更新します。
Page Ruleの設定ミス
原因
リダイレクトループは、競合する二つのPage RulesがURL転送設定になっている場合に発生することもあります。例えば、 一つのPage Ruleがa.example.comへのトラフィックをb.example.com にリダイレクトし、別のページルールがb.example.com へのトラフィックをa.example.comにリダイレクトします。
解決方法
CloudflarePage Rulesアプリでルールを確認し、トラフィック同士が相互に転送するように設定されているルールが二つあるかどうか確認してください。