Cloudflare に 新しいドメインを追加 したあと、訪問者のブラウザに ERR_TOO_MANY_REDIRECTS や The page isn’t redirecting properly が表示されることがあります。
このエラーは、訪問者がリダイレクトループに入ったときに発生します。
flowchart LR accTitle: リダイレクトループの図 A[<code>http://</code><code>example.com</code> へのリクエスト] --> B[<code>https://</code><code>example.com</code> へリダイレクト] B --> C[<code>http://</code><code>example.com</code> へリダイレクト] C --> B subgraph リダイレクトループ B C end
よくある原因は次のとおりです。
- SSL/TLS 暗号化モード の設定ミス。
- Edge Certificates ページ上の各種設定。
- リダイレクトルール の設定ミス。
ドメインの SSL/TLS 暗号化モード は、Cloudflare がオリジンサーバーへどう接続するかと、オリジンが提示する SSL 証明書をどう検証するかを制御します。
Cloudflare 側の値とオリジン Web サーバー側の設定が矛盾すると、この設定がリダイレクトループの原因になります。
ドメインの暗号化モードが Flexible のとき、Cloudflare はオリジンサーバーへ HTTP で暗号化なしのリクエストを送ります。
オリジンサーバーが HTTP リクエストをすべて HTTPS へ自動リダイレクトすると、リダイレクトループが発生します。
flowchart TD accTitle: Flexible モードのリダイレクトループの図 A[<code>https://</code><code>example.com</code> へのリクエスト] --> B[暗号化モードが <code>http://</code><code>example.com</code> へリダイレクト] B --> C[オリジンサーバーが <code>https://</code><code>example.com</code> へリダイレクト] C --> B subgraph Cloudflare B end subgraph オリジンサーバー C end
対処するには、オリジンサーバーから HTTPS リダイレクトを削除するか、SSL/TLS 暗号化モードを Full 以上に変更します(オリジンサーバーに SSL 証明書の設定が必要です)。オリジンでリダイレクトを設定せずに Cloudflare エッジで HTTPS を強制する方法は、HTTPS 接続を強制する を参照してください。
ドメインの暗号化モードが Full または Full (strict) のとき、Cloudflare はオリジンサーバーへ HTTPS で暗号化リクエストを送ります。
オリジンサーバーが HTTPS リクエストをすべて HTTP へ自動リダイレクトすると、リダイレクトループが発生します。
flowchart TD accTitle: Full または Full (strict) モードのリダイレクトループの図 A[<code>http://</code><code>example.com</code> へのリクエスト] --> B[暗号化モードが <code>https://</code><code>example.com</code> へリダイレクト] B --> C[オリジンサーバーが <code>http://</code><code>example.com</code> へリダイレクト] C --> B subgraph Cloudflare B end subgraph オリジンサーバー C end
対処するには、オリジンサーバーから HTTP リダイレクトを削除します。
ドメインで Always Use HTTPS が有効な場合、Cloudflare はアプリケーション内のすべてのサブドメインとホストについて、http リクエストを https へリダイレクトします。
オリジンサーバーが HTTPS リクエストをすべて HTTP へ自動リダイレクトすると、リダイレクトループが発生します。
flowchart TD accTitle: Always Use HTTPS のリダイレクトループの図 A[<code>http://</code><code>example.com</code> へのリクエスト] --> B[Always Use HTTPS が <code>https://</code><code>example.com</code> へリダイレクト] B --> C[オリジンサーバーが <code>http://</code><code>example.com</code> へリダイレクト] C --> B subgraph Cloudflare B end subgraph オリジンサーバー C end
対処するには、オリジンサーバーから HTTPS リダイレクトを削除するか、Always Use HTTPS を無効 にします。
ドメインで HTTP Strict Transport Security(HSTS) が有効な場合、Cloudflare は対応ブラウザに対し、http リンクを https リンクへ変換するよう指示します。
オリジンサーバーが HTTPS リクエストをすべて HTTP へ自動リダイレクトする場合、またはドメインの暗号化モードが Off の場合、リダイレクトループが発生します。
flowchart TD accTitle: HTTP Strict Transport Security のリダイレクトループの図 A[<code>https://</code><code>example.com</code> へのリクエスト] --> B[暗号化モードが <code>http://</code><code>example.com</code> へリダイレクト] B --> C[HSTS が <code>https://</code><code>example.com</code> へリダイレクト] C --> B C --> D[オリジンサーバーが <code>http://</code><code>example.com</code> へリダイレクト] D --> C subgraph Cloudflare B C end subgraph オリジンサーバー D end
対処するには、オリジンサーバーから HTTPS リダイレクトを削除し、ドメインの暗号化モードを Flexible 以上にします。
または、HTTP Strict Transport Security(HSTS) を無効 にします。
矛盾する URL リダイレクトがある場合も、リダイレクトループが発生します。
flowchart TD accTitle: リダイレクトルールのリダイレクトループの図 A[<code>https://</code><code>a.example.com</code> へのリクエスト] --> B[<code>http://</code><code>b.example.com</code> へリダイレクト] B --> C[<code>https://</code><code>a.example.com</code> へリダイレクト] C --> B subgraph Cloudflare B C end
対処するには、各種 リダイレクトルール と Page Rules を見直し、ルール同士が矛盾していないことを確認します。