リダイレクトループとは
リダイレクトは、あるURLにアクセスした人を別のURLへ自動的に転送する仕組みです。リダイレクトループは、AがBへ、BがAへ(あるいはAがAへ)転送するように設定され、終わりなく転送が繰り返される状態を指します。
ブラウザは無限ループを防ぐため、一定回数を超えると転送を打ち切り、「リダイレクトが多すぎます」といったエラーを表示します。Chromeでは ERR_TOO_MANY_REDIRECTS と表示されることが多いです。エラーが出ること自体は、ブラウザが暴走を止めてくれている合図です。
よくある原因
原因はいくつかのパターンに分かれます。設定を見直すときは、まず自分のケースがどれに当たるかを照らし合わせると早いです。
- 転送先が転送元に戻る相互リダイレクト(A→B かつ B→A)
- 自分自身へ転送している(A→A)
- 末尾スラッシュの有無を双方向に強制し合っている(/page と /page/ が互いに転送)
- httpとhttpsの間で行き来している(http→https の一方で https→http が残っている)
- wwwあり・なしの正規化が両方向に効いてしまっている
- HTMLのmeta refreshやJSの location 書き換えが、同じURLへ繰り返し飛ばしている
症状別チェック表
リダイレクトループが起きるときの原因と対処は、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。
確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。
- 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
- 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
- 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
- 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する
切り分けの進め方
実際の調査は次の順で進めると、原因の場所を絞り込めます。
- ブラウザの開発者ツールのネットワークタブを開き、どのURLからどのURLへ301/302が連続しているかを確認する
- 転送の鎖をたどり、どこで元のURLに戻っているか(ループの折り返し点)を特定する
- サーバーやホスティングのリダイレクト設定で、対象のルールが双方向になっていないか確認する
- 末尾スラッシュ・http/https・wwwの正規化が一方向だけになるよう整える
- HTMLのmeta refreshやJSの location 代入が残っていないか調べ、不要なら外す
静的なHTMLで起きる場合
サーバー設定が絡まない静的なHTMLでも、ループは起こり得ます。typ的なのは、headに meta http-equiv="refresh" を入れて別ページへ飛ばしているのに、飛ばし先が再び同じ仕組みで戻ってくるケースや、JavaScriptで window.location を条件なしに書き換えてしまっているケースです。
この種のループはHTMLやJSを読めば原因が見えます。リダイレクトの起点になっている記述を探し、本当に転送が必要かを見直してください。確認段階のページなら、不要な自動転送はいったん外して素のまま表示するほうがトラブルが減ります。
直したページを安全に共有する
リダイレクト設定はサーバー環境ごとに挙動が変わるため、自分の手元では再現しないループが、別の環境で出ることがあります。直したHTMLを実際の共有環境で開いて確かめると確実です。
ギガサイト便はHTMLやZIPをドロップするだけで 〇〇.giga-site.com 形式の共有URLを発行し、HTTPSは自動で付きます。サーバー側の複雑なリダイレクト設定を自分で組まずに表示確認ができるので、まずページ単体が正しく開くかを切り分けたいときに役立ちます。直したら同じURLのまま差し替えて再確認できます。
よくある質問
ERR_TOO_MANY_REDIRECTS は何を意味していますか
ブラウザがリダイレクトを一定回数までたどっても最終ページに到達できず、無限ループとみなして転送を打ち切ったことを示します。設定のどこかで転送が元に戻っているサインです。
ループの折り返し点を見つけるには
開発者ツールのネットワークタブで、301や302のステータスが連続している箇所を追います。転送先のURLが、すでに通ったURLに戻っているところがループの折り返し点です。
http/httpsやwww有無の正規化でループするのはなぜですか
正規化ルールが双方向に効いていると、httpsへ寄せた直後にhttpへ戻す、あるいはwwwを付けた直後に外す、という往復が起き続けます。各正規化は必ず一方向だけになるよう設定します。
静的HTMLのリダイレクトループはどう直しますか
headのmeta refreshやJSのlocation書き換えが起点であることが多いです。それらの記述を探し、転送が本当に必要かを見直します。確認段階では不要な自動転送を外し、素のまま表示するのが安全です。
原因が分からないときはどこから確認すべきですか?
まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。