遅かれ早かれ、すべてのウェブサイトで処理の難しいバグやエラーが発生します。多くの場合、処理が難しいことはエラー自体に情報があまりないためです。429 Too Many Requests(リクエストが多すぎる)エラーはそのようなエラーです。
幸いなことに、最も一般的な原因が広く知られています。一方、考えられる原因は複数あるため、解決するには複数の対策を試みる必要があります。
本記事では、429 Too Many Requestsエラーの原因とその見た目について説明します。 次に、本異常が発生した場合のウェブサイトのトラブルシューティングの5つの手順について説明します。それでは、まいりましょう。
WordPressの429 Too many Requestsエラーを修正するには
429 Too Many Requestsエラーは、ユーザー(プラグイン、DDosなど)が一定時間内に送信したリクエストが多すぎるため発生ます。サーバーが「リクエストの送信を止めてください。」とお願いしています。
本異常をWordPressで解決するには、次の5つの手順のいずれかを実施してください。
- WordPressのデフォルトログインURLを変更する
- HTTPSの内部リンクが異常の原因になっているか確認する
- WordPressのプラグインをすべて無効にする
- デフォルトのWordPressテーマに切り替える
- ホスティング会社に問い合わせる
429 Too Many Requestsエラーの原因
場合によっては、サーバーがユーザーエージェントが特定のページに短時間で頻繁にアクセスしようとしていることを検出すると、レート制限機能がトリガーされます。最も一般的な例は、ユーザー(または攻撃者)が繰り返しサイトにログインしようとした場合です。
ただし、サーバーはログインの認証情報ではなく、クッキーを使用してユーザーを識別することもあります。リクエストはまた、サーバー上または複数のサーバー上でリクエストごとにカウントされる場合もあります。そのため、本エラーが表示される状況はいくつかあります。表示方も少し変わってしまう場合があります。
- 429 Too Many Requests
- 429 Error
- HTTP 429
- Error 429 (Too Many Requests)
本エラーには、429ステータスコードが発生した理由、または再度ログインできるまでの待機時間などの追加情報も表示される場合があります。以下に例を示します。
HTTP/1.1 429 Too Many Requests
Content-type: text/html
Retry-After: 3600
<html>
<head>
<title>Too Many Requests</title>
</head>
<body>
<h1>Too Many Requests</h1>
<p>I only allow 50 requests per hour to this website per logged in user. Try again soon. </p>
</body>
</html>
エラーの表示方に関係なく、意味はいつも同じです。あるユーザーまたはコードスニペットからのリクエストが多すぎて、サーバーに過負荷をかけます。時々、異常は自然に消えることがあります。プラグインやサービス拒否(DDoS)攻撃の問題が原因で発生するような状況では、エラーを積極的に解決する必要があります。
ただし、429エラーがログインページに影響を及ぼすことが多いため、ウェブサイトのダッシュボードにアクセスできなくなる場合があります。そのため、修正作業が少し難しくなりますが、やりあ方を知っておくとできるはずです。
How to Fix the 429 Too Many Requests Error (5 Methods)
ご想像のとおり、私たちKinstaは弊社のサービスの性質により、多くのWordPressサポート依頼に対応しています。つまり、429エラーとその考えられるすべての原因に精通しています。
下記、WordPressの429 Too Many Requestsエラーが発生する最も一般的な5つの原因について説明します。そして、サイトを早速修正できるように、各原因の適切な解決策も紹介します。
1. WordPressのデフォルトログインURLを変更する
総当たり攻撃はWordPressウェブサイトの429エラーの主な原因の一つです。攻撃者がWordPressのログインページを攻撃しようとするのを防ぐ最も簡単な方法の一つは、URLをデフォルトのURLから変更して、そもそも見つけられないようにすることです。
デフォルトでは、ログインページはyourwebsite.com/wp-adminです。これは覚えやすいに違いありませんが、ウェブ上の誰もがアクセスできる場所を知っているため、まったく安全ではありません。
デフォルトのWordPress URLを変更する最も簡単な方法は、無料のWPS Hide Loginプラグインを使用することです。

さて、使い方を見ていきましょう。まず、どのプラグインと同様にプラグインをインストールしてアクティブ化します。つぎに、WordPressダッシュボードの「設定」> 「WPS Hide Login」タブに移動します。

ここで、使用するURLを入力することにより、ログインURLを簡単に変更できます。loginやwp-loginなどの推測しやすい名前を必ず避けましょう。(loginなどにすると、そもそもURLを変更する目的に反します。サイトに固有の名前を考え出しましょう。)
このプラグインを使用すると、古いログインURLにアクセスしようとするユーザーを別のページにリダイレクトすることもできます。たとえば、デフォルトのオプションでは、/wp-adminにアクセスしようとすると404エラーページが表示されるため、URLが変わったことがすぐ分かります。完了後に、設定を必ず保存しましょう。
2. Really Simple SSLプラグインを無効にし、内部リンクを置き換える
今日は、ウェブサイトに必ず SSL(Secure Sockets Layer)証明書を設定すべきです。同様に、ウェブサイト全体でHTTPSを使用すべきです。HTTPSは、古いHTTPプロトコルよりもはるかに安全であり、サイトの検索エンジン最適化(SEO)にもいい影響を与えます。
HTTPSの使用を強制するには、.htaccessリダイレクトを手動で設定するかプラグインを使用します。そこで、最も普及しているプラグインの一つは、Really Simple SSLプラグインでしょう。

このプラグインの魅力は、数クリックだけでウェブサイト全体をHTTPSで強制的に読み込まれるようにすることができることです。ただし、私たちの経験からいうと、時折バグが発生する可能性もあります。たとえば、状況によっては429エラーが発生する場合があります。
このプラグインには何も問題はありませんが、HTTPSの使用を採用するための最良の方法ではありません。問題なのは、HTTPSを手動で設定しても、内部リンクをどうするかという問題が残っていることです。ウェブサイト全体に多くの内部リンクがある可能性が高いため、プラグインを無効にした後、その内部リンクすべてをHTTPSバージョンに置き換える必要があります。
まず、プラグイン自体を処理しましょう。WordPressの管理画面にアクセスできる場合、Really Simple SSLを無効にすることは問題になりません。「停止」を押すだけで完了です。

ただし、429 Too Many Requestsエラーによりダッシュボードへのアクセスができなくなることが多いため、FTPクライアントを使用してプラグインを手動で無効にする必要がある場合があります。
いずれにしても、Really Simple SSLプラグインが削除されたら、429エラーが消えるはずです。つまり、ダッシュボードにアクセスできるようになるため、新しいプラグインを設定して、すべての内部リンクを一気に置き換えることができます。その新しいプラグインはSearch and Replaceです。

プラグインを有効にして、WordPressの「ツール」> 「検索と置換」タブに移動します。そこで、wp_postmetaテーブルを選択し、「Search」(検索)フィールドと「Replace」(置換)フィールドにそれぞれ次のパラメーターを入力します。
http://yourwebsiteurl.com
https://yourwebsiteurl.com
次に、「dry run」(ドライラン)を選択します。これにより、データベース内でプラグインが置き換えるHTTP URLの数がわかります。そのドライランの後、プラグインを実際に実行すると、すべてのリンクが置き換えられます。
Really Simple SSLプラグインを無効にした後、.htaccessファイルを使用してサイト全体のHTTPSリダイレクトも設定する必要がありますので、ご注意ください。これにより、429エラーが再発せずにHTTPSを採用できます。
3. すべてのWordPressプラグインの一時停止
これまで、429エラーを引き起こす可能性のある単一のプラグインに焦点を当ててきました。ただし、外部のリクエストが多すぎると、どのプラグインも本異常の原因になる可能性があります。上記のいずれの手順でも異常が解決しない場合は、すべてのプラグインを一度に無効にして、本異常の原因になっていないかを確認した方が用意でしょう。
前提として、ダッシュボードにアクセスできず、通常の手順でプラグインを無効にできないことを想定しています。その場合、Filezillaなどのクライアントを使用してFTPでウェブサイトにアクセスし、public_html/wp-content/ディレクトリに移動します。
中には、複数のフォルダーがあり、そのうちの1つはpluginsと呼ばれます。

そのフォルダーを右クリックし、名前をplugins.deactivatedなどに変更します。そうすると、WordPressはプラグインを見つけられなくなり、すべてのプラグインが無効になります。ただし、サイトに再度アクセスしようとする前に、pluginsと呼ばれる新しい空のフォルダーを作成して、WordPressが通常どおり機能することを確保しましょう。
サイトにアクセスしたときに429エラーがなくなった場合、無効にしたプラグインの一つが原因であると想定できます。そこで、どのプラグインが原因であるかを絞り込む必要があります。それを行うには、次の手順に従います。
- 1分前に作成した空のpluginsディレクトリを削除し、以前のフォルダーを元の名前に復元します。
- pluginsディレクトリにアクセスします。
- 中のプラグインのフォルダのいずれかを別の名前を付けて保存すると、そのプラグインのみが停止されます。
- ウェブサイトにアクセスして、429エラーが消えているかどうかを確認します。
- エラーが消えていない場合は、プラグインフォルダーの名前を元に戻し、次のフォルダで手順3と4を繰り返します。
アクティブなプラグインのリストを1つずつ確認することにより、最終的にどのプラグインが原因であるかを特定できるはずです。 429 Too Many Requestsエラーの原因を特定したら、そのプラグインを完全に削除して異常を修正します。
4. デフォルトのWordPressテーマに切り替える
429エラーの原因はプラグインではないことが分かった場合、ご利用中のテーマの可能性もあります。その場合は、ご利用中のテーマを手動で無効にすると、WordPressが自動的にデフォルトのテンプレートのいずれかに切り替えます。
手順は、プラグインを手動で停止するのとほぼ同じ手順です。信頼できるFTPクライアントをもう一度起動し、今回はpublic_html/wp-content/themes</emディレクトリに移動します。その中で、ご利用中のテーマのフォルダーを探して名前を変更します。
その後、ウェブサイトにアクセスしようとすると、429 Too Many Requestsエラーが消えているはずです。また、サイトの見た目はかなり異なっていることにも気付くでしょう。ただし、パニックにならないでください。テーマとそのカスタム設定は消えていません。
テーマのフォルダを元の名前に戻し、もう一度アクティブにすることだけです。これで429エラーが再発した場合は、テーマの開発者に問い合わせるか、サイトのテーマを切り替えて、該当のテーマを完全に削除することを検討する必要があります。
5. それでもエラーを解決できない場合は、ホスティング会社に問い合わせる
場合によっては、429エラーの原因がウェブサイト自体ではなく、サーバーであることがあります。その場合、いくら頑張っても問題をご自分で解決できません。
たとえば、特定のサードパーティのサービスやプラットフォームからのリクエストをブロックしているホスティング会社もあります。 これらには、ウェブサイトに多数のリクエストを行う検索エンジンやクローラーなどのアプリ(Google Search Consoleなど)が含まれます。
ホスティング会社に問い合わせて、これらのリクエストを許可するよう依頼することにより問題を解決できます。さらに、異常の原因はホスティング会社の制限ではなくても、解決策に関する貴重なアドバイスをしてくれる場合があります。
まとめ
ウェブサイトでエラーが発生すると、常にイライラします。ただし、エラーコードが表示されると、少なくともどう処理すればいいか分かります。429 Too Many Requestsエラーが発生した場合、リクエストが多すぎるとサーバーに負荷がかかりすぎることがすぐわかるため、真の原因を特定するだけです。
429エラーが発生した場合、次の5つの方法でトラブルシューティングを行います。
- WordPressのデフォルトのログインURLを変更する
- Really Simple SSLプラグインを無効にする
- すべてのWordPressプラグインを一時停止する
- デフォルトのWordPressテーマに切り替える
- それでもエラーを解決できない場合は、ホスティング会社に問い合わせる
WordPressの429 Too Many Requestsエラーの処理についてご不明点などがございますか?下記のコメント欄でお知らせください。