「ERR_TOO_MANY_REDIRECTS」エラーに遭遇することはよくあること。

このエラーはサイトのリダイレクト設定に誤りがある、またはサードパーティサービスの設定が正しくない場合に発生します。解決方法はとてもシンプルです。

リダイレクトループを解決して、サイトを素早く復旧させる方法を早速見ていきましょう。

「ERR_TOO_MANY_REDIRECTS」エラーとは

「ERR_TOO_MANY_REDIRECTS」エラーは、そのメッセージが示す通り、何らかの原因でリダイレクトが多くなり、永遠にリダイレクトが繰り返される(リダイレクトループ)状況に陥っていることを意味します。

基本的に、サイトが正常に機能しなくなり(URL 1がURL 2に紐付き、URL 2がURL 1に紐づいている、またはドメインが何度もリダイレクトしているなど)、他の多くのエラーとは違って自然に解決することがありません。そのため、自分のサイトでこのエラーが発生したら、何かしらの操作が必要になります。

また、「request exceeded the limit of 10 internal redirects due to probable configuration error」(設定のエラーに伴い、リクエストが10回の内部リダイレクトの制限を超えました)というエラーメッセージも表示されているかもしれません。

エラーコード ERR_TOO_MANY_REDIRECTS
エラーの種類 ブラウザエラー/コードのエラー
エラーのバリエーション This page isn’t working. domain.com redirected you too many times.(このページは動作していません。domain.com でリダイレクトが繰り返し行われました。)
The page isn’t redirecting properly(ページの自動転送設定が正しくありません)
This page isn’t working right now(このページは現在機能していません)
Safari Can’t Open the Page(ページを開けません)
エラーの原因 WordPressの設定、プラグインの誤操作
ブラウザキャッシュ、Cookieの問題
サードパーティーサービスの問題
HTTPSの設定に誤りがある
サーバーの設定に誤りがある

このエラーは、ブラウザごとに異なるメッセージが表示されます。

「ERR_TOO_MANY_REDIRECTS」エラーの見え方

このエラーには、ブラウザによって見え方が若干異なります。

Google Chrome

Google Chromeでは、このエラーは「ERR_TOO_MANY_REDIRECTS」または「このウェブページにはリダイレクトループが含まれています」と表示されます。

このページは動作していません。domain.com でリダイレクトが繰り返し行われました

Google Chromeの「ERR_TOO_MANY_REDIRECTS」エラー
Google Chromeの「ERR_TOO_MANY_REDIRECTS」エラー

Chromeの「ERR_CACHE_MISS」エラーの解決方法はこちら

Mozilla Firefox

Mozilla Firefoxでは、以下のように「ページの自動転送設定が正しくありません」と表示されます。

domain.com への接続中にエラーが発生しました。Cookie を無効化したり拒否していることにより、この問題が発生している可能性もあります

Mozilla Firefoxの「ERR_TOO_MANY_REDIRECTS」エラー
Mozilla Firefoxの「ERR_TOO_MANY_REDIRECTS」エラー

Microsoft Edge

Microsoft Edgeでは、「このページは現在機能していません」と表示されます。

Domain.com へのリダイレクト回数が多すぎます

Microsoft Edgeの「ERR_TOO_MANY_REDIRECTS」エラー
Microsoft Edgeの「ERR_TOO_MANY_REDIRECTS」エラー

Safari

Safariでは、「ページを開けません」というメッセージが表示されます。

“domain.com “を開こうとして多くのリダイレクトが発生しています。あるページへのリダイレクトが設定されているページを開いたときに、リダイレクト先のページから元のページにさらにリダイレクトが設定されている場合にこうした現象が起きる場合があります

Safariの「ERR_TOO_MANY_REDIRECTS」エラー
Safariの「ERR_TOO_MANY_REDIRECTS」エラー

「ERR_TOO_MANY_REDIRECTS」エラーの原因

このエラーは、ブラウザが最初のページとリダイレクト先のページとの間の接続を確立できない場合に発生します。主な原因には、以下のようなものが挙げられます。

  • WordPressの設定ミス
  • WordPressプラグインの設定ミス
  • サーバー設定の誤り
  • HTTPS設定の誤り
  • ブラウザのキャッシュやCookieの問題
  • サードパーティサービス(CDNなど)の問題
  • 不正なサイトまたはドメインの移行

「ERR_TOO_MANY_REDIRECTS」エラーの解決方法

ここからは、リダイレクトループの解決策および確認事項をご紹介します。特に一般的なものから順に見ていきましょう。

  1. 特定のサイトのCookieを削除する
  2. サーバー、プロキシ、ブラウザのキャッシュをクリアする
  3. リダイレクトループの原因を特定する
  4. HTTPS設定を確認する
  5. サードパーティサービスを確認する
  6. WordPress設定を確認する
  7. WordPressプラグインを一時的に無効にする
  8. サーバーレベルのリダイレクトを確認する

1. 特定のサイトのCookieを削除する

GoogleやMozilla Firefoxでは、エラーメッセージとともにCookieの削除が推奨されます。Cookieには、「ERR_TOO_MANY_REDIRECTS」エラーの原因となるような、誤ったデータが含まれている可能性があります。このトラブルシューティングは、(自分のサイトではなく)訪問先のサイトでこのエラーに遭遇した際にも有効です。

Cookieはサイトでのログイン状態やその他の設定を保持するため、まずはエラーが発生しているサイトのCookieを削除してみます。特定のサイトのCookieのみ削除すれば、頻繁に訪問する他のサイトの設定に影響を与えることはありません。

Google Chromeでは、以下の手順で特定のサイトのCookieを削除することができます。

ステップ1

Google Chromeのウィンドウ右上にある3つの点をクリックし、「設定」を開きます。

Chromeの設定
Chromeの設定

ステップ2

左側メニューから「プライバシーとセキュリティ」を選択し、「サードパーティ Cookie」をクリックします。

ステップ3

下にスクロールし、「すべてのCookieとサイトデータを表示」を開きます。

Chrome see all cookies
クローム すべてのクッキーを見る

ステップ4

エラーが発生しているサイト(ドメイン)を右上の検索フィールドで検索し、その右側に表示されるゴミ箱のアイコンをクリックして削除します。その後、そのサイトに再度アクセスしてみてください。

Delete cookie in Chrome
ChromeでCookieを削除する

2. サーバー、プロキシ、ブラウザのキャッシュをクリアする

リダイレクトループはキャッシュされる可能性のあるレスポンスであるため、WordPressサイト、サーバー、サードパーティのプロキシサービス、そしてブラウザのキャッシュもクリアしてみてください。

WordPressサイトのキャッシュをクリアする

リダイレクトループの種類によっては、WordPressの管理画面にアクセスできる場合があります。管理画面を開ける場合は、キャッシュプラグインの設定から簡単にキャッシュをクリアできます。主要のプラグインを使ってWordPressのキャッシュをクリアする方法は、以下をご覧ください。

Kinstaのお客様は、WordPress管理画面のツールバーからすぐにキャッシュをクリアすることができます。

WordPressの管理画面からKinstaのキャッシュをクリア
WordPressの管理画面からKinstaのキャッシュをクリア

サーバーのキャッシュをクリアする

WordPress管理画面にアクセスできない場合、ご利用のホスティングアカウントからクリアできる可能性があります。

Kinstaのお客様は、MyKinstaWordPressのキャッシュをクリアできます。以下の手順に従ってください。

  1. 左側メニューの「WordPressサイト」をクリック
  2. 該当のサイトを選択して「ツール」画面を開く
  3. 「サイトキャッシュ」セクションの「キャッシュをクリア」をクリック
MyKinstaでキャッシュをクリア
MyKinstaでキャッシュをクリア

プロキシキャッシュをクリアする

CloudflareやSucuriなどのサードパーティのリバースプロキシサービスを使用している場合は、そのキャッシュもクリアします。

Cloudflareの場合

Cloudflareの場合、管理画面にログイン後、「Caching」に移動して「すべてパージ」をクリックしてください。

Cloudflareのキャッシュをクリア
Cloudflareのキャッシュをクリア
Sucuriの場合

Sucuriの場合は、管理画面にログイン後、「Performance」に移動して「Clear Cache」をクリックすれば完了です。

Sucuriのキャッシュをクリア
Sucuriのキャッシュをクリア

ブラウザキャッシュをクリアする

ブラウザキャッシュに原因があるかどうかを確かめるには、キャッシュをクリアする前に、ブラウザをシークレットモードで開いてみてください。また、別のブラウザでも同じエラーが表示されるかどうかも確認しましょう。

Chromeのシークレット ウィンドウを開く
Chromeのシークレット ウィンドウを開く

ブラウザキャッシュが原因であると判断した場合は、キャッシュをクリアしてください。各ブラウザでのクリア方法は以下をご覧ください。

3. リダイレクトループの原因を特定する

キャッシュをクリアしても問題が解決しない場合、リダイレクトループの原因を特定しましょう。これには、Kinstaの無料HTTPステータス&リダイレクトチェッカーが便利です(cURL経由も可)。

例えば、以下のサイトでは301リダイレクトが繰り返され、誤ったリダイレクトの大きな連鎖が発生しています。すべてのリダイレクトをチェックして、同じURLに転送されていないか、あるいはHTTPからHTTPSへのループなのかを判断します。

リダイレクトループ
リダイレクトループ

Chromeの拡張機能であるRedirect Pathも便利なツールで、サイト上(特定のURLやページ)で起こっているすべてのリダイレクトを確認できます。

Redirect Path
Redirect Path

4. HTTPS設定を確認する

HTTPSの設定も確認しましょう。「ERR_TOO_MANY_REDIRECTS」エラーは、HTTPSに切り替えたばかりで、移行が完了していなかったり、何か誤った設定を行なったりしている場合によく発生します。

SSL証明書を導入してからリダイレクトを設定する

これは最もよくあるパターンで、SSL証明書をインストールせずにWordPressサイトにHTTPSリダイレクトを設定すると、即座にリダイレクトループを引き起こします。これを解決するには、WordPressサイトにSSL証明書をインストールしてください。

また、SSLチェックも実行してみてください。SSL/TLS証明書は、メインの証明書だけでなく、中間証明書(チェーン)もインストールし、適切に設定しなければなりません。

これには、Qualys SSL Labsの無料ツールがおすすめです。信頼性に優れており、Kinstaでも証明書の検証に利用しています。「Hostname」フィールドにドメインを貼り付けて、「Submit」をクリックするだけでOKです。必要に応じて、公開結果を非表示にすることもできます(「Do not show the results on the boards」にチェックを入れる)。結果が表示されるまでには、1〜2分かかることがあります。

Qualys SSL LabのSSLサーバーテスト
Qualys SSL LabのSSLサーバーテスト

SSLプラグインを使用せず、ハードコーディングされたリンクを更新する

無料のSSLプラグインには、自動的にHTTPSにリダイレクトしてくれるReally Simple SSLなどがあります。しかし、サードパーティのプラグインは常に互換性やその他の問題を引き起こす可能性があるため、長期的な解決策としては推奨されません。一時的な解決策としては有用ですが、ハードコーディングされたHTTPリンクの更新が必要です。

WordPressで検索と置換を行う4つの方法はこちらでご紹介しています。Kinstaのお客様は、カスタマーサポートにご相談いただければ、作業を代行いたします。

サーバーのHTTPからHTTPSへのリダイレクトルールを確認する

サーバーのHTTPSリダイレクトルールに誤りがあることも考えられます。

NginxでHTTPをHTTPSにリダイレクトする

Nginxを実行している場合、Nginxの設定ファイルに以下のコードを追加して、HTTPSリダイレクトを設定できます。Nginx上で動作するWordPressサイトにはこの方法が推奨されます。

server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }

.
KinstaではNginxを使用しており、お客様側で特別な操作は不要です。追加でリダイレクトが必要になる場合は、カスタマーサポートまでその旨をご連絡いただければ、担当者がNginxの設定を更新します。

リダイレクトについては動画での解説もご用意しています

ApacheでHTTPをHTTPSにリダイレクトする

ウェブサーバーにApacheを使用している場合、.htaccessファイルに以下のコードを貼り付けてください。Apache上で動作するWordPressサイトにはこの方法が推奨されます。

RewriteEngine On
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

HTTPSリダイレクトが多すぎないかを確認する

あるいは、単にHTTPSリダイレクトが多すぎるのかもしれません。Redirect Checkerのようなツールを使って、リダイレクトの数をチェックしましょう。以下のスクリーンショットでは、正しく設定されていないリダイレクトが検出されており、wwwあり/なし両ドメインで重複したHTTPSリダイレクトが行われています。

適切でないリダイレクト設定
適切でないリダイレクト設定

5. サードパーティサービスを確認する

「ERR_TOO_MANY_REDIRECTS」エラーは、Cloudflareのようなリバースプロキシサービスでもよく発生します。これは通常、Flexible SSL設定が有効になっていて、WordPressサーバーにSSL証明書がすでにインストールされている場合に見られます。この設定を選択すると、ホスティングサーバーへのリクエストはすべてHTTPで送信されます。ホスティングサーバーは、すでにHTTPからHTTPSにリダイレクトしている可能性が高く、これが原因でリダイレクトループが発生します。

これを解決するには、Cloudflare Crypto設定を「Full」または「Full(strict)」に変更してください。Kinstaのお客様は、Cloudflare SSL証明書をインストールする方法もご覧ください。

Cloudflare Crypto設定で「Full」を選択
Cloudflare Crypto設定で「Full」を選択

常にHTTPSを使用する」設定を選択すると、ループを生み出すことなくHTTPSにリダイレクトできます。Cloudflareでもう1つ気をつけたい点は、転送URLのリダイレクトルール。リダイレクトするURLと転送先が同じドメインにならないように注意してください。これがリダイレクトループの原因となり、影響を受けたURLは解決できなくなります。

StackPathを使用している場合は、「Origin Pull Protocol」という設定でHTTPSのみを選択してください。

Cloudflare DNSのみを使用する

プロキシ/WAFサービスではなく、CloudflareのDNSのみを使用したい場合は、DNSレコードが「DNS のみ」に設定されていることを確認してください。オレンジではなく、グレーの雲のアイコンが表示されます。これは、Cloudflare管理画面の「DNS」タブで設定可能です。

Cloudflare DNSのみ使用
Cloudflare DNSのみ使用

6. WordPressの設定を確認する

WordPressの設定の確認箇所は2点あります。正しく設定されているか、誤ったドメインに紐付けていないか、不一致でないかをチェックしましょう。また、サイトの他の部分と一致する正しい接頭辞を使用していないことも考えられます。

  • WordPress アドレス(URL)─ブログにアクセスするためのアドレス
  • サイトアドレス(URL)─WordPressのコアファイルのアドレス

この2つのアドレスは、WordPressに独自のディレクトリを与えている場合を除いて、一致していなければなりません。

WordPressのアドレス設定
WordPressのアドレス設定

ほとんどの場合、WordPressの管理画面にアクセスすることはできないため、wp-config.phpファイルを編集して、設定を上書きします。

wp-config.phpファイルは、通常WordPressサイトのルートにあり、SSH、WP-CLI、またはFTP経由でアクセス可能です。WP_HOMEとWP_SITEURLをハードコーディングするには、次のコードをファイルの一番上に貼り付けてください。

define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');

すると、wp-config.phpファイルは以下のようになります。

wp-config.phpファイルでWordPressのURLを変更
wp-config.phpファイルでWordPressのURLを変更

他にも、管理画面にアクセスせずにWordPressのURLを変更するは2通りあります。

設定を終えたらサイトに再度アクセスし、リダイレクトループが解決しているかを確認しましょう。

マルチサイト

マルチサイトでドメインを変更する場合は、wp_blogsテーブルも確認してください。誤った検索と置換によって、メインサイトとサブサイトが一致しておらず、リダイレクトループが発生している可能性があります。

各サブサイトには、wp_blogsテーブルのblog_idに対応するテーブルセット、wp_#_optionsがあります。wp_#_optionsテーブル(#はblog_idに対応)に移動して、SITEURLとHOMEを変更してください。

7. WordPressプラグインを一時的に無効にする

今回のエラーに限らず、WordPressでは一時的にすべてのWordPressプラグインを無効にすることで、簡単に問題を特定することができます。例えば、RedirectionやYoast SEO(有料版)などのプラグインは、リダイレクトを実装できます。このようなプラグインの設定や更新が、すでにサーバーに設定されているリダイレクトと衝突し、リダイレクトループを引き起こすことがあります。

プラグインを無効にしても、データが失われることはできません。WordPressの管理画面にアクセスできない可能性が高いため、サーバーにSFTP経由でログインし、pluginsフォルダの名前を「plugins_old」などに変更してみてください。その後、サイトにアクセスし、エラーが解消されているかどうかを確認します。

SFTPでpluginsフォルダの名前を変更
SFTPでpluginsフォルダの名前を変更

これでエラーが消えたら、各プラグインを1つずつテストしていきます。pluginsフォルダの名前を「plugins」に戻し、各プラグインの名前を同じように1つずつ変更しながら、サイトに再びエラーを引き起こすものを特定します。なお、これはステージングサイトで実行することをお勧めします。

プラグインフォルダの名前を変更
プラグインフォルダの名前を変更

8. サーバーのリダイレクト設定を確認する

サーバー上のHTTPからHTTPSへのリダイレクトに加えて、追加のリダイレクト設定に誤りがないかを確認することもお勧めします。例えば、301リダイレクトの設定が間違っていると、サイトがダウンする恐れがあります。通常、これはサーバーの設定ファイルで確認できます。

Apacheの.htaccessファイル

KinstaではNginxを使用していますが、Apacheを実行するWordPressホスティングをご利用の場合は、.htaccessファイルに間違ったルールが設定されている可能性があります。以下の手順に従って、ゼロから作り直しましょう。

まずは、FTPまたはSSHでサイトにログインし、バックアップのため、.htaccessファイル名を.htaccess_oldに変更します。

.htaccessファイルの名前を変更
.htaccessファイルの名前を変更

このファイルを再作成するには、通常WordPressでパーマリンクを保存し直すだけでOKですが、「ERR_TOO_MANY_REDIRECTS」エラーが発生中の場合は、WordPressの管理画面にアクセスできない可能性が高いため、この方法は使えません。したがって、.htaccessファイルを新規作成し、以下の内容を貼り付けて、サーバーにアップロードしてください。以下はデフォルトの設定を使用しています。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

マルチサイト用のデフォルトの.htaccessファイルやその他の例については、WordPress Codexを参照してください。

Kinstaでは、電子書籍や動画でサイト管理に役立つ知識をご紹介しています。WordPressサイト管理にまつわる60以上のヒントをまとめた電子書籍はこちら

Nginxの設定

Nginxの場合、ご利用のホスティング会社によって設定ファイルが多少異なるため、やや複雑になります。ホスティング会社に問い合わせ、リダイレクトループや過剰なリダイレクトを引き起こしている可能性のある誤りはないか、設定ファイルを確認してもらってください。

Kinstaをご利用であれば、まずリダイレクトツールで誤ったリダイレクトを設定していないかどうかを確認してみてください。以下は、リダイレクトループの原因となる、https://domain.com/から同じページに戻るリダイレクトの例です。

誤った301リダイレクト
誤った301リダイレクト

また、「リダイレクト元」と「リダイレクト先」の両方にロケーションURLが含まれている場合にも、リダイレクトループがよく発生します。

例えば、以下のような場合。

リダイレクト元^/blog/about

リダイレクト先https://domain.com/blog/about-me

これは、プロセスが^/blog/about 達すると、残りの部分-meを無視して無限ループを引き起こすためです。したがって、文字列の終点と始点を指定しなければなりません。解決するには、以下のように変更します。

リダイレクト元^/blog/about$

リダイレクト先https://domain.com/blog/about-me

「$」がNginxに文字列が存在しその後何も続かない場合にのみ、リクエストを停止して一致させるように指示します。

よくわからない場合は、カスタマーサポートまでお気軽にお問い合わせください。

リバースプロキシの設定ミス

「ERR_TOO_MANY_REDIRECTS」エラーのもう1つの主な原因は、リバースプロキシにあります。リバースプロキシは非常に複雑な場合があり、設定を少しでも誤ればリダイレクトループを引き起こします。Kinstaのお客様は、カスタマーサポートまでご相談ください。

まとめ

リダイレクトループの追跡は時に厄介ですが、今回ご紹介したトラブルシューティングを実践すれば、解決の手がかりがみつかるはずです。「ERR_TOO_MANY_REDIRECTS」エラーについてご質問がありましたら、以下のコメント欄よりお知らせください。

Brian Jackson

Brianの最大の情熱の一つは10年以上使用してきたWordPressです。複数のプレミアムプラグインさえ開発しています。Brianの趣味はブログや映画やハイキングなどです。TwitterでBrianとつながりましょう。