HTTPステータスコード一覧|500・404エラーを解決するには?
サイトを運用するWebディレクターやサイトの開発者、所有者は日々Webのトラブルと格闘しているのではないしょうか。エラーの際、チェックすべき項目にHTTPステータスコードがあります。この記事では代表的なエラーコードとその対処法、そしてステータスコードの一覧をまとめました。
Contents [hide]
HTTPステータスコードはサーバーからのレスポンス状態
ブラウザからHTTPリクエストをして、サーバーからHTTPレスポンスが返される。これを繰り返して該当Webページが表示される、というのが通常のWebアクセスの流れです。
しかし、Webページがうまく表示されない場合はそれを阻害する原因があると考えられます。そんなときに確認する項目のひとつにHTTPステータスコードという3桁の番号があります。
このステータスコードは、サーバーから返されるHTTPレスポンスの状態を示すもの。Webのディレクターや開発者はHTTPステータスコードを確認してエラーの種類にあたりをつけ、デバック作業などを行います。つまり、うまくいかない理由を特定するためにも、HTTPステータスコードを知っておくことは重要なのです。
ちなみHTTPステータスコードは、HTTPレスポンスの1ライン目に表示されています。以下は正常に表示されている場合のステータスコードなので、通常のWebの閲覧時に目にすることはほとんどありません。
HTTP/1.1 200 OK Date: Mon, 14 Dec 2020 07:51:31 GMT Content-Type: text/html;charset=UTF-8 Set-Cookie: |
ChromeやFirefoxなどのモダンブラウザにはステータスコードの確認機能があります。
Chromeでは、以下の手順でステータスコードを確認いただけます。
- 該当Webサイトを開きます
- F12キーを押し、開発者モードを開きます
- Elements、Consoleなどが並ぶタブから「Network」を選択します
- ステータスコードが表示されていないときは更新をかけます
HTTPステータスコードは5つのクラスに分けられる
HTTPスタータスコードは100番台から500番台まであり、5つのクラスに分かれています。Webディレクターが意識しておくべきは300番台から500番台と考えてもいいでしょう。
100番台:情報レスポンス
「処理継続中」を意味します。サーバー側で処理に時間がかかっている状態です。
200番台:成功レスポンス
処理が成功して正常にレスポンスできた状態。ブラウザ上で正しくWebサイトが表示されていれば、ほとんどがこのステータスコードです。
300番台:リダイレクションメッセージ
ブラウザのリクエストが完了できていない状態、追加の処理を必要としている状態です。この場合の追加処理とは、サイトリニューアルでURLが変更された場合に新しいURLに転送するリダイレクトの処理などです。
400番台:クライアントエラー
ブラウザのリクエストが処理できない状態です。リクエストされたページ自体が見つからないというコードです。よく目にする404エラーなどはこの代表格です。
500番台:サーバーエラー
サーバー側に問題があり、エラーになっている状態です。何らかの事情でサーバーが正常にレスポンスを返せなかったり、動いていなかったりすることを示します。
Webディレクターが覚えておきたいHTTPステータスコード一覧表
1xx
情報レスポンス | 102 Processing | サーバーはリクエストを受け取って処理を「継続」しています。 |
---|
2xx
成功レスポンス | 200 OK | リクエストが「成功」したことを示します。普通にみられるサイトはこのレスポンスです。 |
---|---|---|
201 Created | リクエストが「成功」し、新しいリソースを作成したことを意味します。 |
3xx
リダイレクト | 301 Moved Permanetly | 指定したリソースが新しいURLに恒久的に移動したことを示します。 |
---|---|---|
302 Found | 一時的なURL変更で、現在、指定したリソースがそこにないことを示します。 | |
303 See Other | クライアントのリクエストに対し、別のURLで該当リソースを取得するよう促しているものです。 | |
307 Temporary Redirect | リクエストしたURLが存在せず、別のURLにリクエストを再送信する必要があることを示します。 |
4xx
クライアントエラー | 400 Bad Request | リクエストの構文が間違えていることを示します。また、ほかの4xx系エラーコードに適さないエラーの場合にも利用します。 |
---|---|---|
401 Unauthorized | 適切な認証情報を持たずにリソースにアクセスしようとしたことを示します。 | |
403 Forbidden | 401以外の理由でリソースを操作できない状態を示します(特定のIPアドレスのみからアクセスできる場合など)。 | |
404 Not Found | 指定したリソースが見つからなかったことを示します。 | |
405 Method Not Allowed | 「ページが存在しているにもかかわらず、アクセスを拒否されている状態」に発せられます。 |
5xx
サーバーエラー | 500 Internal Server Error | サーバー側でエラーが発生したことを示します。また。ほかの5xx系エラーコードに適さない場合もこのステータスコードが返されます。 |
---|---|---|
503 Service Unavailable | メンテナンスやアクセス集中などでサービスを提供できないことを示します。 | |
504 Gateway Timeout | プロキシが上流サーバーにリクエストを送っても接続できなかったことを示します。一時的なDNS異常の可能性もあります。 |
参考:Webを支える技術(山本陽平)
おもなステータスコードの設定や対応
すべてのステータスコードを覚える必要はありません。しかし、問題が発生したときにステータスコードを用いながら開発側やサーバー管理者とコミュニケーションを取ると、解決までの道筋がつきやすくなります。そこで、Webディレクターが意識しておきたい代表的なステータスコードやその設定、エラーコードに対しての対応を説明します。
301リダイレクトと302リダイレクトの使い分け
Web運営にかかわると頻繁に目にするHTTPステータスコードに「301 Moved Permanently」と「302 Found」という代表的なリダイレクト設定があります。
リダイレクトとは、このページを訪れたユーザーを別のURLに自動的に転送する仕組みのこと。郵便の転送にも似ているかもしれませんね。
ユーザーを正しいURLに案内してファンを引き継ぐということはもちろん、ここまでに勝ち取ってきたページの評価もリダイレクト先に引き継ぐことができます。SEOを考えれば、当然必要な対応です。なお、リダイレクトの設定は、サーバー側で行うのが一般的です。
では、「301 Moved Permanently」と「302 Found」の違いは何でしょうか?
- 301 Moved Permanently 恒久的にURLが変更されたとき
- 302 Found 一時的にURLが変更されたとき
本来は、URLを変更せずに使い続けることがSEOにおいても理想的です。ただし、やむを得ず変更しなければならない場合もあります。
たとえば、企業サイトをイメージしてみてください。企業再編でホールディングス化したり、または分社化したりすると、URLが変わるケースが想像しやすいと思います。この場合は、恒久的にURLが変更されてしまうため、301 Moved Permanentlyでリダイレクトを設定します。
一方、メンテナンスなどで一時的に別のURLでリソースを公開する場合は302 Foundで設定します。最近はレスポンシブデザインが主流となっていますが、PCとスマートフォンで別々にページを用意している場合の転送にも302 Foundでリダイレクトを設定します。
オリジナルの404 Not Foundページを用意する
サイトのURLが存在しないときは、サーバーは404 Not Foundを返します。普段、ネットサーフィンをしていても目にすることは多いと思います。エラーが出たことだけを示すシンプルなページだけでは、ユーザーが離脱することも可能性もありますし、またサイトイメージとしてもあまりよくありません。そんなときは、オリジナルの404ページを作成することをおすすめします。サイト全体のデザインに合わせたページならイメージを損なうリスクも減少し、ユーザーが次に行うべきアクションを明示することもできるので、離脱を防ぐこともできます。
なお、サイト内に404ページが存在したとしても、Googleの評価には影響しないということはGoogleからも発表されています。とはいえ、早めに対策しておくに越したことはありません。
厄介な存在!? ソフト404エラーとは
ソフト404エラーとは、ブラウザ上では「404 Not Found」を示すページや、コンテンツがほとんどないようなページが表示されているのに、「200 OK」というHTTPレスポンスが返されている状態のこと。「表示」と「ステータスコード」が異なっているという奇妙な状態で、この現象はコンテンツを自動生成するタイプで起こりがちです。
たとえば、ECサイトや大量の物件情報が格納されているデータベースサイトなどがその代表格です。これら自動生成ページの多いサイトでは、先ほどのオリジナル404ページを用意しておくものですが、それを表示した際に「200 OK」を返してしまうということがあるのです。
ユーザーへの影響は少ないのですが、検索エンジンは実体のないURLをクロールしてしまい、検索結果に反映してしまう、ということになります。SEOへの影響はほとんどない、というGoogleの発言もありますが、ユーザーに不利益を与える原因を残していれば、間接的にSEOに影響していく可能性もゼロではありません。
また、この事態を招く背景には、プログラム改修時に404と200を逆にしてしまったということも考えられます。つまり、きちんと表示されているのに、404 Not Foundというステータスコードを返してしまっているページが存在する可能性もあるということ。
対処法としては、Googleが提供するGoogle Search Consoleを使い、ソフト404エラーを発見して対応しましょう。
- Google Search Consoleにアクセス
- インデックスから「カバレッジ」を選択
- 「除外」を選択するとレポート表示
このように表示されます。該当ページがはっきりしたら、プログラムでのミスなのか、サーバーの設定ミスなのかを原因をはっきりさせて対応しましょう。
5xx番台サーバーエラーに対しては、どう対応すべき?
500 Internal Server Errorが返されたとき、サーバー側に何らかのエラーが発生したことを示します。原因が特定しきれない、という点で厄介なエラーです。
サーバーでWordPressなどのCMSを実行している場合、インストールの失敗、互換性の不具合、サーバーのアクセス権限の設定ミスなどが疑われます。この場合はひとつずつトラブルを潰して解決します。- 新たにインストールしたり更新したりした、ソフトウェアやプラグインの互換性を確認する
- サーバー権限が正しく設定されているかを確認する
- スクリプトが無限ループしてタイムアウトしていないか確認する(WordPressで報告多数)
などが代表的な原因として疑われます。それでも問題点がはっきりしないときはサーバー管理者に問い合わせましょう。
503 Service Unavailableが返されたときは、アクセス集中などが原因として考えられるので、待つしかありません。抜本的な解決を目指すなら、レンタルサーバーではなく専用サーバーを用意するなどコストをかけるのが近道です。
また、504 Gateway Timeoutが返されたときは、一時的なDNS異常の可能性もあります。DNSサーバーエラーについては、以下の記事に詳しくまとめてありますので、ご参照ください。
「DNSサーバーは応答していません」というエラーの原因と対処方法
HTTPステータスコードを理解して早めの課題解決を
エラーコードが返されたときは、すぐに対応するのがおすすめです。エラーコードを放置しておけばいい影響はありません。
先述のように、ソフト404エラーは実体のないページを検索エンジンにクローリングさせることになります。サイト内に多くのソフト404のページが多ければ多いほど、クロールが遅れてしまって、検索ロボットに正しい評価をしてもらうまでに時間がかかるかもしれません。また、サーバーエラーはサイト流入の機会損失につながりますし、エラーではないもののリダイレクト設定を怠れば、そのまま顧客やトラフィックを失ってしまいます。
Webサイトの価値を最大化、またトラブル時に早期解決するためにも、Webディレクターは代表的なHTTPステータスコードを覚えて、開発側やクライアントとコミュニケーションを行うといいでしょう。