WordPressでサイトを構築して運用していると様々なエラーが発生します。そのエラーがどういったものなのかを示すのがHTTPステータスコードです。
WordPressに限らずWeb開発者はHTTPステータスコードを見ることで、どのようなエラーが発生してるのかある程度予測することができます。
そこでこの記事ではWordPressサイトで発生する可能性のあるHTTPステータスコードについて、ステータスコードの意味と発生する原因について解説します。
WordPressで発生するHTTPステータスコード一覧
WordPressで発生する可能性のあるステータスコードはたくさんあります。ステータスコードことに意味が異なりますので順番に解説していきます。
また、全てのステータスコードを紹介すると膨大な量になるため、ここではエラーに関係するHTTPステータスコードのみ解説しています。
400 Bad Request
400 Bad Requestは定義されていないメソッドを使った場合など、クライアントがサーバーに送信したリクエストを正常に処理できないときに発生するステータスコードです。一般的に400エラーと言われます。
400エラーはサーバー側に問題があるのではなくブラウザ側に問題があることが多いです。
発生原因
WordPressの場合は以下の要因で発生する可能性があります。
- コメントのコメント送信機能が不具合を起こしている
- ブラウザのCookieが破損している
- セキュリティプラグインを導入した
セキュリティプラグインを導入した後にWordPress の管理画面にアクセスしようとしたら400エラーが発生した場合は、セキュリティプラグインの影響で必要なCookie情報が変わってしまい、アクセスが拒否されてしまうことがあります。
ですのでセキュリティプラグインを導入したら400エラーが発生するようになったのであれば一度ログインページからログインし直すようにしてください。
401 Unauthorized
401 UnauthorizedはBasic認証またはDigest認証が欠けられているページにアクセスし、その認証を通過できなかった際に発生するステータスコードです。
発生原因
プラグインなどを用いてBasic認証を行っており、なおかつそのBasic認証を通過できなかった場合に発生します。
そのためBasic認証を行っていないWordPressでは絶対に見ることがないステータスコードと言えるでしょう。
402 Payment Required
ショッピングサイトので支払いが必要なときに支払い失敗した時に表示されるステータスコード。
ステータスコードとしては存在していますが現在は未実装で将来的に使われる可能性があります。
発生原因
WordPressに決済機能を搭載し、ユーザーが決済を拒否・何らかの理由で失敗した際にこちらのステータスコードが返されます。
402 Payment Requiredは将来のために予約されているステータスコードであるため、決済プラグインの種類によってはこちらのステータスコードを返さない可能性があります。
403 Forbidden
403 Forbiddenはリソースへのアクセスをサーバーが拒否された際に表示されるステータスコードです。
発生原因
アクセスが許可されていないページにアクセスしようとした際に発生することがあります。
例えば管理画面へのアクセスをホワイトリストに登録されたIPアドレスからしか受け付けないという設定にしている場合などはこちらのステータスコードが返されて強制的にアクセスが拒否されます。
セキュリティプラグインでログインページの URL を変更している際は注意してください。セキュリティを高めるために本来のログインページにアクセスしようとすると403エラーが返されて、変更先のログインページにアクセスできないことがあります。
このような事態にならないようにログインページを変更した際は必ずブックマークして忘れても大丈夫なようにしておきましょう。
404 Not Found
404 Not Foundは最も目にする機会の多いステータスコードです。存在しないページにアクセスした際に表示されるエラーコードで、WordPressも標準対応しています。
発生原因
内部リンクに設定しているURLを間違えた際などに起きやすいです。
一つ注意しなければならないのが、WordPressは404エラーが発生するURLにアクセスしようとしたとき、そのURLと酷似したURLにリダイレクトしようとします。
例えば「sample.com/hello_world」という実際には存在しないURLにアクセスしようとしたときに「sample.com/hello」というページが既に存在していた場合、WordPressが自動的に「sample.com/hello」へとリダイレクトしようとします。
この影響で内部リンクミスに気づきにくいというWordPress特有の問題があるので注意してください。
405 Method Not Allowed
405 Method Not Allowedは高されていないメソッドを使用・リクエストしようとすると発生するステータスコードです。
存在しないURLにPOSTリクエストを送ったり、POSTリクエストを受け付けていないURLに対してPOSTリクエストを送ったときなどに発生します。
発生原因
WordPressだとテーマカスタマイズやプラグイン開発をしているとき、WP REST APIへのリクエスト方法を間違えた際に発生します。
WP REST APIは、GET/POSTどちらのリクエストを受け付けるか定義されているため、GETリクエストじゃないといけないところにPOSTリクエストを送ってしまった場合は確実に405エラーが発生します。
WP REST APIを駆使したシステム開発をする際は注意してください。
407 Proxy Autentication Required
プロキシ認証が必要な場合で、プロキシ認証を通過できないときに発生するステータスコードです。
発生原因
WordPressでプロキシを有効化していて、認証されていないプロキシもしくは外部からアクセスしようとした場合に発生します。
プロキシ設定を一つ間違えると、WordPress管理人であってもWordPress管理画面に一切アクセスできなくなってしまうのでプロキシの扱いには気をつけてください。
408 Request Timeout
送信したリクエストが時間以内に完了していない場合に返されるステータスコードです。サーバーへのアクセスが集中しているなどサーバーに負荷がかかっている時に起きやすいです。
発生原因
投稿している記事がバズってアクセスが急増した時などに発生しやすいです。
WordPressであればキャッシュプラグインやデータベース最適化プラグイン、そしてKUSANAGIやWEXALなどのCMS高速化環境を使えば改善できる問題ですので、408 Request Timeoutが発生する場合は早急に手を打つことをおすすめします。
500 Internal Server Error
サーバー内部エラーが発生されるステータスコードです。このエラーは確実にサーバー側に何らかの問題が発生しており、プログラムの修正が必要である可能性が極めて高いエラーです。
発生原因
WordPressの場合、functions.phpのカスタマイズミスなどテーマやプラグインのコードを編集したときに発生します。
WordPressダッシュボードのテーマエディターやプラグインエディターから編集した場合は、適用される前にテストが行われ、編集したコードが正常に実行できない場合(エラーが発生する場合)は保存されないので500エラーを未然に回避できるため、500エラーが発生することはあまりありません。
ですが、ローカルでfunctions.phpなどを編集したものをアップロードして上書きした場合は変更テストが行われないままプログラムが保存されるため、万が一そのプログラムに重大な不具合があった場合はサーバー内部エラーとして扱われて500エラーが発生してしまいます。
テーマやプラグインのプログラムに限らず、Apache・NginxなどWebサーバー設定ファイルの記述ミスでも発生するので気をつけましょう。
502 Bad Gateway
ゲートウェイプロキシサーバーで不正なリクエストを受信してサーバーがそのリクエストを拒否した際に返されるステータスコードです。
発生原因
WordPress セキュリティプラグインやレンタルサーバーなどが用意しているWAF(Web Application Firewall)を導入している時に発生しやすいです。
実際には不正なコードではなくてもリクエストの中にスクリプトコードなどのプログラムが含まれていると誤検知することがあり、WordPress管理者であっても502エラーでアクセスが拒否されてしまうことがあります。
セキュリティーを高められるというメリットがありますが、利便性が低下するのでWAF使用時はWordPressの設定周りを終わらせた状態で有効化するようにしましょう。
503 Service Unavailable
サーバーが高負荷状態やメンテナンス中であるときに返されるステータスコードです。
発生原因
WordPressでは高負荷状態の時に発生しやすいエラーです。特にレンタルサーバーは評価が高まりすぎると一部のアクセスを拒否して負荷を抑える処理が働くことがあり、正常にアクセスできたと思って別のページを開いたら突然503 Service Unavailableが表示された、ページを読み込み直したらもとに戻ったという現象が発生することもあります。
この場合はキャッシュプラグインなどを使ってサーバーの負荷を削減するか、高性能なサーバへの引っ越しなどを検討するようにしましょう。
HTTPステータスコードごとに適切な対応を取るように
HTTPステータスコードを見ればサーバーが高負荷状態になってエラーを吐いているのか、それともサーバー設定が原因でエラーを吐いているのかといったことの分析に役立ちます。
適切な対応方法はステータスコードごとに変わってくるので、技術者の方はHTTPステータスコードからエラー原因を推測し、不具合を解消していくといいでしょう。
WordPressトラブルへの対応はWordPressのお医者さんでも受け付けています。もしエラーを取り除くことが出来ずに困っているというサイト管理者がいたらぜひお問い合わせください。