Kinstaでは様々なエラーを見たことがありますが、その中にもERR_TOO_MANY_REDIRECTS(リダイレクトループという)はよく発生するものです。このエラーは一般的にWordPressウェブサイトの最近の変更後に、またはサーバー上のリダイレクトの設定ミス及びサードパーティサービスの設定ミスを理由に発生します。しかし、割と対策しやすいエラーである為、ご心配は必要ありません。対策方法については、下記の推奨事項をご確認ください。

「ERR_TOO_MANY_REDIRECTS」エラーとは?

ERR_TOO_MANY_REDIRECTS(日本語訳:リダイレクトが多すぎます)の理由は、ウェブサイトが無限のリダイレクトループに入ってしまったことです。ウェブサイトが停止しています。(つまり、URL 1がURL 2を指し、URL 2がURL 1を指しているか、リダイレクトが繰り返し行われるかのどちらかです。)他のエラーとは異なり、このエラーは自然に回復しない為、対策しないといけません。

エラーメッセージの表現の仕方は下記の通り、各ブラウザによって違います。

Google Chrome

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

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

Google ChromeのERR_TOO_MANY_REDIRECTS

Google ChromeのERR_TOO_MANY_REDIRECTS

Mozilla Firefox

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

domain.comへの接続中にエラーが発生しました。この問題は、クッキーの受け入れを無効にするか拒否することによって引き起こされることがあります。

Mozilla FirefoxのERR_TOO_MANY_REDIRECTS

Mozilla FirefoxのERR_TOO_MANY_REDIRECTS

Microsoft Edge

Microsoft Edgeでは、「このページは表示できません 」(以下を参照)だけが表示されます。

リダイレクトが多すぎました。

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

次に本エラーが出たときの対策をご紹介します。(よく発生する原因の順で述べます。)

特定のウェブサイトのクッキーを消去する

GoogleでもMozillaでも、「クッキーを消去してみてください」という推進事項がエラーの直下に表示されます。クッキーには、ERR_TOO_MANY_REDIRECTSエラーの原因となるデータが含まれていることがあります。この対策は自分のウェブサイトだけでなく、どのウェブサイトでも行うことができます。

クッキーがすべてのウェブサイトの「ログイン」状況またはその他の設定の情報を保持しているため、不具合が発生しているウェブサイトのみでクッキーを消去した方がよいでしょう。そうすると、頻繁に訪れる他のウェブサイトには影響しません。

Google Chromeで特定のウェブサイトのクッキーを消去するには、次の手順に従ってください。

ステップ1

Google Chromeでは、右上の3つの点をクリックします。 次に、「設定」をクリックします。

Chromeの設定

Chromeの設定

ステップ2

スクロールダウンし、「詳細設定」をクリックします。

Chromeの詳細設定

Chromeの詳細設定

ステップ3

「コンテンツの設定」をクリックします。

Chromeのコンテンツ設定

Chromeのコンテンツ設定

ステップ4

「クッキー」をクリックします。

Chromeのクッキー

Chromeのクッキー

ステップ5

「すべてのCookieとサイトデータ」をクリックします。

ChromeのすべてのCookieとサイトデータ

ChromeのすべてのCookieとサイトデータ

ステップ6

ERR_TOO_MANY_REDIRECTSエラーが発生するサイト(ドメイン)のクッキーを探し、そのドメインに対するコンピューターに保存されているクッキーを消去できます。その後、サイトに再度アクセスしてみてください。

Chromeでクッキーを消去する

Chromeでクッキーを消去する

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

リダイレクトループはキャッシュ可能なレスポンスである為、WordPressウェブサイト、サーバー、サードパーティプロキシサービス、必要に応じてブラウザさえのキャッシュをクリアした方がよいでしょう。

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

リダイレクトループの種類により、WordPress管理画面にアクセスできる可能性があります。アクセスできる場合には、キャッシングプラグインの設定画面で簡単にキャッシュをクリアすることができます。人気なプラグインそれぞれでWordPressのキャッシュをクリアする方法については下記をご参照ください。

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

WordPress管理画面でKinstaキャッシュをクリアする

WordPress管理画面でKinstaキャッシュをクリアする

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

管理画面にアクセスできない場合には、WordPressホスティング会社の多くは、WordPressウェブサイトのキャッシュをクリアできる独自のコントロールパネルツールがあります。

Kinstaのお客様は、MyKinstaダッシュボードからWordPressキャッシュを手動で消去することができます。 サイトを選択し、ツールをクリックし、「Clear Cache」(キャッシュをクリアする)ボタンをクリックするだけです。次に、リダイレクトループが消えたかを確認します。

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

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

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

CloudflareまたはSucuriなどのサードパーティのリバースプロキシサービスをご利用の方は、向こうのキャッシュもクリアした方がよいでしょう。

Cloudflare

Cloudflareのキャッシュをクリアするには、ダッシュボードにログインし、「Caching」(キャッシング)をクリックし、「Purge Everything」(すべてをクリアする)をクリックします。

Sucuri

Sucuriキャッシュを消去するには、ダッシュボードにログインし、「Performance」(パフォーマンス)にアクセスし、「Clear Cache」(キャッシュをクリアする)をクリックします。

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

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

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

キャッシュをクリアせずにブラウザのキャッシュに原因があるかどうかを判断したい場合は、シークレットモードでブラウザを開くか別のブラウザを使ってERR_TOO_MANY_REDIRECTSエラーが表示されているかを確認してください。

シークレットモードでChromeを開く

シークレットモードでChromeを開く

ブラウザのキャッシュに原因があると判断した場合には、クリアすることができます。各ブラウザのキャッシュをクリアする方法については下記をご参照ください。

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

キャッシュをクリアしてもリダイレクトループが消えない場合は、リダイレクトループの原因を特定する必要があります。無料のオンラインRedirect Checker toolは不具合の分析ができます。なお、分析はcURLを介して行うこともできます。

たとえば、以下のサイトでは繰り返し301リダイレクトが行われており、リダイレクトループが続いています。すべてのリダイレクトを確認することにより、ループバックするか、HTTPからHTTPSへのリダイレクトのループかを判断できます。(解決方法は後程述べます。)

リダイレクトが多すぎます。

リダイレクトが多すぎます。

ChromeのRedirect Path拡張機能は、ウェブサイトのすべてのリダイレクト(特定のURLまたはページ)についての情報を提供する為、非常に便利です。

Redirect Path拡張機能

Redirect Path拡張機能

HTTPS設定を確認する

次に確認するのはHTTPSの設定です。ERR_TOO_MANY_REDIRECTSが発生するのは、WordPressウェブサイトをHTTPSに移行した直後に発生するのはよくある話です。原因は不十分な設定または設定ミスです。

1. SSL証明書なしでHTTPSを強制しないこと

SSL証明書なしでHTTPSを強制することは本エラーの最も一般的な原因です。SSL証明書をインストールせずに、WordPressウェブサイトをHTTPS経由で読み込まれるようにすると、ウェブサイトがリダイレクトループに入ってしまいます。対策は単にSSL証明書をインストールすることです。

また、SSLチェックを実行することもお勧めします。SSL/TLS証明書には、メイン証明書だけでなく、中間証明書もインストールし、適切に設定する必要があります。

Qualys SSL Labsの無料SSLチェックツールを使用することをお勧めします。信頼性が非常に高い為、当社が証明書を検証するときにすべてのお客様を対象にこのツールを使用します。SSLチェックツールにアクセスし、「ホストネーム」フィールドにドメインを入力し、「送信」をクリックするだけです。必要に応じてパブリックな結果を非表示にすることもできます。ウェブサーバー上のサイトのSSL/TLSコンフィギュレーションをスキャンするのに1〜2分かかることがあります。

SSLテスト

SSLテスト

2. SSLプラグインを使用しないで、ハードコードされたリンクを更新すること

Really Simple SSLなどのHTTPSを自動的にリダイレクトする無料のSSL WordPressプラグインがあります。ただし、サードパーティプラグインを利用すると、常に課題または互換性問題が生じる可能性があるため、この方法を応急処置としない方がいいです。一時対策として使用してもいいですが、必ずハードコードされたHTTPリンクを更新する必要があります

WordPressの検索と置換を実行する4つの方法についてのチュートリアルをご用意しております。また、Kinstaのお客様は、この作業をサポートチームに任せても構いません。

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

おそらく、サーバー上のHTTPSリダイレクトルールが誤って構成されている可能性があります。

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

ウェブサーバーがNginxを使用している場合、Nginxの設定ファイルに次のコードを追加することにより、すべてのHTTPトラフィックを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にリダイレクトする

WebサーバーがApacheを使用している場合、.htaccessファイルに次のコードを追加することにより、すべてのHTTPトラフィックをHTTPSに簡単にリダイレクトできます。Apacheで動作するWordPressをリダイレクトするために推奨される方法です。

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

4. HTTPSリダイレクトが多すぎるか確認する

おそらく、HTTPSリダイレクトが多すぎるかもしれません。Patrick SextonのRedirect mapperツールを使用することにより、ウェブサイトのリダイレクト件数を簡単に確認できます。ここでは、正しく設定されていないリダイレクトの例を示します。Redirect mapperを使用することにより簡単に確認できます。 wwwと非wwwバージョンの両方でHTTPSリダイレクトが2件あることがわかります。

リダイレクト異常

リダイレクト

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

ERR_TOO_MANY_REDIRECTSは、Cloudflareなどのリバースプロキシサービスを原因に発生することもあります。通常は、向こうのフレキシブルなSSLオプションが有効になっているのに、WordPressホストにもSSL証明書がインストールされている場合に発生します。なぜかというと、Flexibleを選択すると、ホスティングサーバーへのすべてのリクエストがHTTP経由で送信されるが、ホストサーバーにはHTTPからHTTPSへのリダイレクトがあり、リダイレクトループが発生するためです。

対策は、Cloudflare Cryptoの設定をFlexibleからFullまたFull (strict)に切り替えることです。Kinstaのお客様は必ずCloudflareをご利用の場合のSSL証明書のインストール方法の手順もご確認ください。

Cloudflare CryptoをFullに設定する

Cloudflare CryptoをFullに設定する

Always Use HTTPS page」(常にHTTPSページを使用する)ルールを使用すると、ループが発生せずにすべてのユーザーをHTTPSにリダイレクトできます。Cloudflareなら、「Forwarding (URL Redirection)」(転送(URLのリダイレクト))ルールもご注意ください。転送元と転送先の同じリダイレクトを作成しないようにご注意ください。これにより無限のリダイレクトエラーが発生し、影響を受けたURLが一切回復できなくなります。

StackPathをご利用の方は、「Origin Pull Protocol」(プルプロトコル元)というオプションを「HTTPS only」(HTTPSのみ)に設定してください。

Cloudflare DNSのみを使用する場合

CloudflareのDNSのみを使用し、Cloudflareのプロキシ・ WAFサービスを使用している方は、DNSレコードが「DNS Only」に設定されていることをご確認ください。確認するには、Cloudflareのコントロールパネルの「DNS」タブにアクセスします。

Cloudflare DNSのみ

Cloudflare DNSのみ

WordPressウェブサイトの設定を確認する

次に、WordPressウェブサイトの一般設定を確認します。間違ったドメインを指しておらず、不一致がないかを検証するのに、2つの項目を確認する必要があります。ウェブサイトに適切な(wwwまたは非www)プレフィックスを使用していないことはよくある不具合原因です。ユーザーがホストまたはドメインを切り替えて、本項目が変更した認識がないことがあります。

  • 「WordPressアドレス(URL)」:ブログへのアクセスができるアドレス
  • 「サイトアドレス(URL)」: WordPressのコアファイルへのアクセスができるアドレス

WordPressの独特なディレクトリを与えていない限り、上記の2つが一致するはずです。

WordPressのアドレス

WordPressのアドレス

ただし、エラー時にはWordPressのダッシュボードにアクセスできない可能性があります。そこで、wp-config.phpファイルに値を入力し、上記の設定を上書きすることができます。

wp-config.phpファイルは通常WordPressウェブサイトのルートにあり、FTP、SSH、WP-CLI経由でアクセスできます。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_#_options:各サブサイトには、wp_blogsテーブルのblog_idに対応する一連のテーブルがあります。#がblog_idに対応するwp_#_optionsテーブルにアクセスし、そのテーブルの「SITEURL」と「HOME」の設定を更新します。

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

WordPressなら、すべてのWordPressプラグインを一時的に無効にすることは、不具合原因を特定するのに便利です。たとえば、Redirection及びYoast SEOプレミアムなどのプラグインでは、リダイレクトを実施できます。これらのプラグインの設定更新などが、サーバー上の既存のリダイレクトと競合し、リダイレクトループを引き起こすことがあります。

単にプラグインを無効にすることにより、データを失うことはありません。なお、エラー時にはWordPressのダッシュボードにアクセスできない可能性がある為、SFTP経由でサーバにログインし、プラグインフォルダの名前をplugins_oldなどに変更する必要があります。その後、ウェブサイトを再度確認してください。

SFTPでプラグインフォルダ名を変更する

SFTPでプラグインフォルダ名を変更する

これでエラーが回復した場合には、各プラグインを1つずつテストする必要があります。プラグインフォルダの名前を「plugins」に戻し、その中の各プラグインのフォルダ名を順番に変更します。最初にステージングサイトで行っても構いません。

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

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

サーバーのリダイレクトを確認する

サーバーのHTTPからHTTPSへのリダイレクトのほかに、設定が間違ってたリダイレクトがないかを確認した方がよいでしょう。たとえば、転送元と転送先が同じである301リダイレクト1件だけでウェブサイト全体がダウンする恐れがあります。リダイレクトは通常、サーバの設定ファイルにあります。

Apacheの.htaccessファイル

KinstaはNginxのみを使用していますが、Apacheを採用しているWordPressホストをご利用の場合は、.htaccessファイルに間違ったルールがある可能性があります。次の手順に従って、一から新しいのを作り直してください。

まず、FTPまたはSSH経由でウェブサイトにログインし、.htaccessファイルの名前を.htaccess_oldに変更します。これにより、バックアップが残ります。

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

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

通常、このファイルを再作成するには、WordPressのパーマリンクを再保存するだけです。ただし、ERR_TOO_MANY_REDIRECTSエラーが発生したときにはWordPressのダッシュボードにアクセスできない為、上記ができません。したがって、新しい.htaccessファイルを作成し、次の内容を入力し、サーバーにアップロードする必要があります。以下は、デフォルト設定のままです。

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

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

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エラーのもう一つのよくある原因は、リバースプロキシです。リバースプロキシは非常に分かりにく場合があり、設定が間違っているとWordPressウェブサイトのリダイレクトループが発生しやすいです。繰り返しますが、Kinstaのお客様は本件でも当社のサポートチームまでお問い合わせください。

まとめ

リダイレクトループの原因を特定するのが難しい場合があります。上記のトラブルシューティング手順でERR_TOO_MANY_REDIRECTSエラーを解決できればと思っております。当社が見逃した重要な点がありましたら、是非コメントを書いて教えてください。

166
シェア