TrueURL
TrueURL

メニュー

無料のリダイレクトツール

リダイレクトループチェッカー

ブラウザーに「リダイレクトが繰り返し行われました」と表示されるのは、サイトがブラウザーを同じ URL の間で循環させているためです。TrueURL はループが閉じるまでリダイレクトをたどり、関係するすべての URL を表示します。

リダイレクトループとは

リダイレクトループは、URL A が URL B にリダイレクトし、B が直接または他のホップを経由して A にリダイレクトし返すときに発生します。ブラウザーは 20 回ほどリダイレクトをたどった後、エラーを表示してあきらめます。Chrome と Edge では ERR_TOO_MANY_REDIRECTS(「リダイレクトが繰り返し行われました」)、Firefox では「ページの自動転送設定が正しくありません」(英語版では The page isn't redirecting properly)、Safari では Too many redirects occurred というエラーです。ループにはまったページを、検索エンジンはインデックスできません。

TrueURL がループを検出する仕組み

TrueURL は、リクエストしたすべての URL を、リクエストメソッドとその時点で保持している Cookie と一緒に記録します。あるホップが、同じ状態ですでにリクエストした URL に戻った場合、そのチェーンは決して終わらないため、結果ではループが閉じるホップを強調表示します。

TrueURL はブラウザーと同じように Cookie を保持するため、本物のループと通常の Cookie のやり取りを区別できます。後者は、サイトが Cookie を設定して同じ URL に一度だけ戻すケースです。1 周するごとに状態が変わる場合、チェーンは詳細設定の最大ホップ数(最大 50)に達するまで続きます。上限に達したチェーンも、たいていは終わりのないループです。たとえば、ホップごとに新しいクエリパラメーターを追加するループがこれに当たります。

リダイレクトループのよくある原因

  • プロキシや CDN の背後での HTTP と HTTPS:CDN がサーバーに HTTP で接続している(Cloudflare の Flexible SSL モードなど)一方で、サーバーがすべての HTTP リクエストを HTTPS にリダイレクトしているケースです。ブラウザーが再び HTTPS をリクエストし、CDN が再び HTTP で取得する、という繰り返しになります。Full (strict) モードを使うか、HTTPS へのリダイレクトを 1 つのレイヤーだけに任せてください。
  • 矛盾する www のルール:あるルールが www を付け、別のルール(多くは CMS やホスティングの管理画面の設定)がそれを外しています。
  • 矛盾する末尾スラッシュのルール:サーバーがスラッシュを付け、アプリケーションがそれを外しています。
  • CMS のアドレス設定:たとえば WordPress で、「WordPress アドレス」や「サイトアドレス」が、サイトを実際に配信しているドメインやスキームと一致していない場合です。
  • ログイン、同意、地域によるリダイレクト:特定の Cookie を持たない訪問者をログインページ、同意ページ、国別ページに送り、そこから元のページに戻すものの、Cookie が設定されない、または受け付けられない場合です。

リダイレクトループを解消する方法

  1. ここで URL をチェックし、どの URL が繰り返されているか、どのホップで元に戻されているかを確認します。
  2. そのホップのレスポンスヘッダー(Server、Via、CF-Ray、X-Powered-By など)を見て、CDN、ウェブサーバー、アプリケーションのどのレイヤーがリダイレクトを送信したかを特定します。
  3. そのルールを 1 つだけ修正または無効にして、もう一度チェックします。変更は 1 レイヤーずつ行ってください。
  4. ブラウザーでテストする前に、そのサイトのキャッシュと Cookie を削除します。キャッシュされた 301 や古い Cookie が残っていると、修正後もループが続くことがあります。

関連ガイド

  • 12 分で読めます

    URL リダイレクトの確認方法とリダイレクトチェーンの読み方

    URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。

    記事を読む

よくある質問

ERR_TOO_MANY_REDIRECTS とはどういう意味ですか?

20 回リダイレクトしても終わらないリダイレクトチェーンに対して Chrome が表示するエラー(「リダイレクトが繰り返し行われました」)です。原因はほぼ例外なくループで、サイトのリダイレクトルール同士が矛盾しています。上の入力欄で URL をチェックし、どの URL が繰り返されているかを確認してください。

一部の訪問者だけにリダイレクトループが発生することはありますか?

はい。Cookie、言語、地域、デバイスに依存するループは、その条件に当てはまる訪問者にだけ発生します。このようなループは詳細設定で再現できます。Cookie、Accept-Language ヘッダー、モバイルの User-Agent を追加して、もう一度チェックしてください。ただし、訪問者の地域に依存するループは再現できません。リクエストは常に Cloudflare のネットワークから送信されるためです。

Cookie を削除するとブラウザーでループが直るのはなぜですか?

その場合、ループの原因は Cookie です。古い Cookie や矛盾する Cookie のせいで、サイトがリダイレクトを繰り返していたのです。Cookie を削除すれば状態はリセットされますが、同じ Cookie を受け取る訪問者には、引き続きこの不具合が発生します。詳細設定の Cookie 欄を使えば、ここで再現できます。

ブラウザーでは表示できるのに、TrueURL でループが検出されるのはなぜですか?

ブラウザーがログイン済みだったり、同意の Cookie を持っていたり、HSTS のエントリやキャッシュされたリダイレクトによってホップの 1 つを飛ばしていたりする可能性があります。TrueURL は、初めての訪問者やクローラーと同じく、Cookie も履歴もない状態から始めます。TrueURL でループが見つかった場合、サイトがデータセンターからのリクエストを別扱いしていない限り、新規の訪問者やクローラーもおそらく同じループに陥っています。

ループと最大ホップ数への到達の違いは何ですか?

ループは、TrueURL が同じ状態ですでにリクエストした URL に戻ったことを意味し、そのチェーンは決して終わりません。最大ホップ数への到達は、完全な繰り返しがないまま、設定した回数のリダイレクトで停止したことを意味します。そのチェーンはいずれ終わるかもしれませんが、それほど長いチェーンはどちらにしても問題です。もっと先まで確認したい場合は、最大ホップ数を 50 まで引き上げられます。

CDN がリダイレクトループの原因になることはありますか?

はい。最もよくある原因の 1 つです。サーバーが HTTPS を強制しているのに CDN がサーバーと HTTP で通信している場合や、CDN とサーバーが www ありと www なしの間で逆方向にリダイレクトしている場合、すべてのリクエストが両者の間を行ったり来たりします。各ホップのレスポンスヘッダーを見れば、どのレイヤーが応答したかがわかります。