サイトにアクセスしようとすると「このページは正常に機能していません」「ERR_TOO_MANY_REDIRECTS」と表示され、ページが一切開けない——このトラブルは、SSL化(httpからhttpsへの切り替え)やWordPressの設定変更の直後に起きやすいことで知られています。原因はサーバーとブラウザの間で転送(リダイレクト)が無限に繰り返されていることにありますが、原因の候補が複数あるため、どこを直せばよいか分かりにくいのが実情です。この記事では、リダイレクトループとは何か、原因の切り分け方、パターン別の直し方を解説します。
リダイレクトループとは
リダイレクトループとは、あるURLにアクセスした際に「別のURLへ転送」という指示が出され、転送先でもまた「別のURLへ転送」という指示が出て、それが延々と繰り返されてしまう状態のことです。
本来リダイレクト(転送)は、古いURLから新しいURLへ1回だけ転送して終わるはずのものです。ところが設定に矛盾があると、A→B→A→B…のように行ったり来たりを繰り返し、ブラウザが「これ以上は無理だ」と判断してエラーを表示します。
ブラウザによって表示されるメッセージは異なりますが、代表的なものは次のとおりです。
- Google Chrome:「ERR_TOO_MANY_REDIRECTS」「このページは正常に機能していません」
- Safari:「このページを開けません。多すぎるリダイレクトが発生したため、Safariはこのページを開けませんでした」
- Microsoft Edge:「リダイレクトが多すぎます」
いずれも意味は同じで、「転送が繰り返されすぎてブラウザが処理を打ち切った」という状態です。
リダイレクトループが起きる主な原因
1. httpとhttpsの間で無限に転送し合っている
SSL化(常時https化)の設定でよくあるのが、「httpへのアクセスをhttpsへ転送する」設定と、「httpsへのアクセスをhttpへ転送する」設定が両方存在してしまうケースです。サーバー側の設定(.htaccessなど)とCMS側の設定(WordPressのURL設定など)が食い違っていると起こります。
2. wwwあり・wwwなしの間で相互に転送している
www.例.com と 例.com のどちらを正規のURLにするかを決める設定で、両方向に転送するルールが同時に存在すると、www ありへの転送とwww なしへの転送が交互に発生し、ループになります。
3. WordPressの「サイトアドレス」設定がサーバー側の転送と矛盾している
WordPressの管理画面(設定→一般)にある「WordPressアドレス(URL)」「サイトアドレス(URL)」がhttpのままなのに、サーバー側で強制的にhttpsへ転送する設定が入っていると、WordPress側がまたhttpへ戻そうとして無限ループになることがあります。設定手順の全体像はWordPressの常時SSL化(http→https)の手順で解説しています。
4. .htaccessの重複・記述ミス
.htaccessファイルに、過去に追加したリダイレクトのルールが残ったまま、新しいルールを追記してしまうと、複数のルールが矛盾した動きをすることがあります。プラグインが自動追記したルールと、手動で書いたルールが重複しているケースも見られます。404を301リダイレクトで転送する際の正しい書き方は404ページを301リダイレクトで正しく転送する方法を参考にしてください。
5. CDN・プロキシ(Cloudflareなど)のSSLモードとサーバー側設定の不一致
Cloudflareなどのサービスを利用している場合、CDN側の「SSL/TLS暗号化モード」の設定と、サーバー側の設定が噛み合っていないとループが起きます。よくあるのは、サーバー側の証明書が正しく機能していない状態でCDN側の設定が「Full(厳密)」以上になっている、あるいはCDN側がhttps転送、サーバー側もhttps転送という設定が二重にかかっているケースです。
原因の切り分け方
原因の候補が複数あるため、まず手元で状況を絞り込みます。
1. どのURLパターンでループするか確認する
http://例.com、https://例.com、http://www.例.com、https://www.例.com の4パターンをそれぞれブラウザで開き、どの組み合わせでエラーになるかを記録します。すべてでエラーになるのか、一部の組み合わせだけなのかで、原因の当たりがつけやすくなります。
2. リダイレクトの回数と転送先を確認する
ブラウザの開発者ツール(ネットワークタブ)を開いた状態でアクセスすると、何度も同じURL間を行き来している様子が確認できます。どのURLとどのURLの間でループしているかが分かれば、どの設定が競合しているかを特定しやすくなります。
3. 関連する設定を洗い出す
以下の設定を一覧にして、どこに転送のルールが書かれているかを確認します。
| 確認場所 | 見るポイント |
|---|---|
| .htaccess(サーバー側) | リダイレクトのルールが複数・重複していないか |
| WordPressの一般設定 | サイトアドレスがhttp/httpsどちらか |
| CDN・プロキシの設定(Cloudflare等) | SSLモード、リダイレクトルールの有無 |
| サーバーのコントロールパネル | 常時SSL化・強制リダイレクトのオン/オフ |
複数の場所に転送設定が分散していることが、ループの根本原因になっているケースがほとんどです。
パターン別の直し方
httpとhttpsのループの場合
サーバー側かWordPress側、どちらか一方だけで転送を行うように統一します。多くの場合、サーバー側(.htaccessやコントロールパネルの常時SSL化機能)で一本化し、WordPress側の設定は正しいURL(https)に合わせておくのが安定します。手順の詳細はWordPressの常時SSL化(http→https)の手順を参照してください。
wwwあり・wwwなしのループの場合
どちらを正規URLにするかを決め、転送ルールを一方向だけにします。両方向の転送ルールが.htaccessに残っていないか確認し、不要な方を削除します。
.htaccessが原因の場合
一度、該当箇所のリダイレクトルールをすべてコメントアウトまたはバックアップを取ったうえで削除し、正常に表示されるか確認します。表示が戻れば、そこに矛盾したルールがあったことが特定できます。そのうえで、必要なリダイレクトだけを1つずつ追加し直します。
Cloudflare等のCDNが原因の場合
CDN側のSSL/TLS暗号化モードを「Full(厳密)」に設定し、サーバー側で有効なSSL証明書が発行されているかを確認します。CDN側とサーバー側、両方に強制リダイレクトの設定が入っていないかも合わせて見直します。
修正時の注意点
リダイレクトの設定変更後は、必ずキャッシュをクリアしてから確認してください。ブラウザのキャッシュや、CDNのキャッシュに古いリダイレクト情報が残っていると、設定を直したのにループが解消しないように見えることがあります。シークレットウィンドウ(プライベートブラウジング)での確認もあわせて行うと切り分けがしやすくなります。
また、SSL化の過程では、画像やCSS・JSの読み込みがhttpのままになる「混在コンテンツ」が別途発生することもあります。鍵マークが表示されない場合は混在コンテンツ(Mixed Content)警告の原因と直し方もあわせてご確認ください。
よくある質問
Q. ERR_TOO_MANY_REDIRECTSとリダイレクトループは同じ意味ですか?
はい、同じ現象を指します。ERR_TOO_MANY_REDIRECTSはGoogle Chromeが表示するエラーメッセージの名称で、原因は「リダイレクトが繰り返されすぎている」状態、つまりリダイレクトループです。
Q. 特定のページだけ開けなくなりました。原因は何が考えられますか?
サイト全体ではなく特定のページだけであれば、そのページ固有のリダイレクト設定(プラグインの個別設定や、そのページ専用の.htaccessルール)が競合している可能性があります。他のページと比べて設定に違いがないか確認してください。
Q. 自分では直せそうにありません。何を伝えれば専門家に相談しやすいですか?
「いつから発生したか」「SSL化やサーバー移転など直前に行った作業」「どのURLパターン(http/https、wwwあり/なし)でエラーになるか」の3点が分かると、原因の切り分けが早くなります。
Q. リダイレクトループのままだとSEOに影響しますか?
サイトが表示できない状態が続くと、Googleのクロールも失敗するため、インデックスからの除外や順位低下につながる可能性があります。早めの対応をおすすめします。
Q. 404エラーとリダイレクトループはどう違いますか?
404エラーは「ページが見つからない」という状態で、ページ自体はサーバーから応答が返ってきます。リダイレクトループは転送が終わらず、ページの応答自体にたどり着けない点が異なります。404エラーについては404 Not Found(404エラー)とは?原因と自分でできる直し方で解説しています。
まとめ
- リダイレクトループとは、URL間の転送が終わらず繰り返され続ける状態
- 主な原因はhttp/https間、www有無間、WordPressの設定、.htaccessの重複、CDNの設定不一致
- まずどのURLパターンでエラーになるかを確認し、関連する設定箇所を洗い出す
- 転送は1つの場所で一本化して管理するのが安定する
- 修正後はキャッシュをクリアして再確認する
サイトが表示できない状態は、原因の切り分けに時間がかかり本業に支障が出やすいトラブルです。原因箇所が特定できない、設定を触るのが不安という場合は、Webレスキューでサイトの調査から復旧までをお引き受けしています。詳しくはWebレスキューをご覧ください。