サーバーエラーの原因をコード別に解説~400番台、500番台~
インターネットを利用してWebサイトをチェックしていると「お探しのページが見つかりませんでした」というエラー文言とともに、たとえば「404 Not Found」など3桁の数字と英文が表示されることがあります。これは「HTTPステータスコード」と呼ばれるものです。サーバーからのレスポンス(応答)になります。
HTTPステータスコードは種類が非常に多い上に専門知識がないとわからないことだらけですが、対処が必要な頻出コードを覚えておくだけで、いざトラブルが発生したときにとても役に立ちます。
本記事ではHTTPステータスコードのなかでも頻繁に表示される400番台と500番台のコードについて詳しく解説します。
目次
HTTPステータスコードとは?
上述した通り、「404 Not Found」などでおなじみの「HTTPステータスコード」とは、ブラウザからリクエストした内容に対してのサーバーからのレスポンスです。
たとえば、Webサイトを閲覧する際に、ブラウザのアドレス欄にURLを入力して送信すると、リクエストした先のサーバー(サービスを提供する側のコンピューター)から「ブラウザにWebサイトの内容を表示する」というレスポンス(応答)が返ってきます。しかし、ごくまれにリクエストしたWebサイトが見つからないなど、何らかの理由で表示できないこともあります。このとき、処理が継続中なのか、正常に完了したのか、はたまたエラーが出てしまったのか、その通信結果を3桁の数字で分かりやすく表示したものが「HTTPステータスコード」です。
「HTTPステータスコード」は、IETF(インターネット技術特別調査委員会)が管理する、インターネットに関する標準的な仕様を記載した仕様書群「RFC(Request for Comments)」の文章内で明確な定義があり(RFC2616・第10章およびRFC7231・第6章)、状況に応じて100番台(処理の継続)、200番台(処理が成功)、300番台(リダイレクトする必要がある)、400番台(クライアントエラー)、500番台(サーバーエラー)の5つのクラスに分類されています。そのうちWebサイト管理者やクライアント(サービスの要求をする側、本記事においてはユーザーと捉えても構いません)がよく目にするのが400番台と500番台です。いずれにしても、HTTPステータスコードは何らかの理由で異常が発生したときに、その原因と対処法を教えてくれる大変便利なものです。
サーバーからWebサイトの情報を受け取る仕組みについて
HTTPステータスコードについて具体的に説明する前に、クライアントがブラウザを通じてサーバーからWebサイトの情報を受け取る仕組みについて少し触れておきましょう。
クライアントは通常、ブラウザのアドレス欄に「http(s)://www.〇〇〇.co.jp/×××/index.html」といったURLを直接入力したり、リンクをクリックしたりすることで自分が目的とするWebサイトを閲覧できます。
URLの先頭にもついている「HTTP(S)」とは「Hyper Text Transfer Protocol」の略で、サービスを提供する側(サーバー)とサービスの要求をする側(クライアント)が通信する際に用いるプロトコル(手順、規格)のことを指します。この通信プロトコルが異なるとコンピューター同士でやりとりができません。
「http」の後に続く「www.〇〇〇.co.jp」は「ホスト名(www)+ドメイン名(〇〇〇.co.jp)」で、リクエスト先のサーバーのことを表しています。「ホスト名+ドメイン名」は別名「FQDN」と呼ばれており、このFQDNがIPアドレス(サーバーを識別するための番号)に自動変換されることで、数値しか処理できないコンピューター(サーバー)でもクライアントからリクエストがあったと認識できます。
また「×××」は「ディレクトリ名」といってサーバー内にあるフォルダのことです。「index.html」は「ファイル名」を指しています。つまりクライアントは「〇〇〇にある×××というディレクトリ内のindexというファイルを閲覧したい」とリクエストしているのです。
こうしてクライアントからのリクエストを受信したサーバーは、その内容に応じてサーバー内に保存されたデータを配信します。ほとんどのWebサイトはHTMLという言語から構成されており、例えば「△△△」という見出しは<h1>△△△</h1>、画像ファイル(image.jpg)は<img src=”image.jpg”>と表記され、これらのデータをクライアント側のブラウザが読み込むことでひとつのWebサイトとして表示されるのです(HTML言語は全て半角で表記)。
しかしここで、URLが間違っている、など何らかの理由でWebサイトが表示できないときは、代わりに「404 Not Found」といったHTTPステータスコードが表示され、Webサイト管理者やクライアントに原因を伝えます。
HTTPステータスコード~400番台の具体例~
HTTPステータスコードの400番台は、リクエストするクライアント側に問題があって発生したエラーを表しています。RFCに記載された400番台のステータスコードは実際には28種類ありますが、このうちよく使われるのは数種類程度です。
それでは、頻繁に使われる400番台のステータスコードについて具体例を紹介します。
400 Bad Request
「400 Bad Request」は、クライアントからのリクエストが無効な場合に表示されるステータスコードです。具体的には、400番台のコードで定義されているエラーのどれにも当てはまらない場合に「400 Bad Request」と返されます。エラーの原因としては、URLの構文ミスやブラウザのキャッシュの破損などが考えられますが、はっきりしたことはわかりません。使用しているブラウザがChromeであれば、メニューアイコンの「その他のツール」→「閲覧履歴データを消去する」を選択するとエラーが解消されることもあります。
403 Forbidden
「403 Forbidden」はクライアントにリクエスト先のアクセス権がない場合に表示されるステータスコードです。このコードが表示された場合、クライアントがリクエスト先を閲覧するためにはWebサイトの管理者にアクセス権を付与してもらうか、アクセスが許可されたネットワーク環境で閲覧するしかありません。「404 Not Found」と並んで使用される頻度の高いコードです。
404 Not Found
「404 Not Found」はリクエスト先のページが存在しない場合に表示されるステータスコードです。ステータスコードのなかではおそらくもっとも目にすることが多いコードで、原因としては、入力したURLのスペルが間違っている、リクエストしたページがすでに削除されている、などが考えられます。企業のサイトのなかにはオリジナルの404エラーページを作成して、訪れたクライアントがサイト内の別のページへ行けるよう工夫しているところもあります。
408 Request Timeout
「408 Request Timeout」はリクエストに時間がかかり、完了しないまま時間切れになった場合に表示されるステータスコードです。408エラーは、例えばサーバーがクライアントに提供するファイルが大きすぎたり、サーバーが混雑していたりすると発生しやすくなります。408エラーが表示された場合は、少し時間をおいてから再度アクセスするとエラーが改善されることもあります。
HTTPステータスコード~500番台の具体例~
HTTPステータスコードの500番台は、サーバー側に問題が発生してリクエストに応答できない状態を表示しています。400番台に比べて実装されている数は少ないものの、なかにはサーバー内部でバグが発生している深刻なエラーもあるので注意しなければなりません。それでは、頻繁に使われる500番台のステータスコードについて具体例を紹介します。
500 Internal Server Error
「500 Internal Server Error」はサーバーに何らかの問題が発生してリクエストを実行できない場合に表示されるステータスコードです。これだけだと、どこで問題が発生しているのかわかりませんが、IIS 7.0(WindowsのWebサーバーソフト)以降のバージョンでは、「500.19」(ページに関連する構成データが無効)という具合に詳細が表示されるようになりました。いずれにしても、500エラーが発生したらホスティング会社に連絡するなどして早期に対処しなければなりません。
502 Bad Gateway
「502 Bad Gateway」はゲートウェイとして動作するサーバーに何らかの問題が発生した場合に表示されるステータスコードです。ゲートウェイとは、通信プロトコルを変換してネットワーク同士をつなげる機器のことで、例えばスマートフォンからインターネットに接続できるのもゲートウェイを経由しているからだといえます。
原因としてはサーバー側の設定ミス、PHP(Webサーバーの開発によく利用されているプログラミング言語の一種)のバージョン変更などが考えられるとはいえ、詳細が特定できないため、なかなか対処しづらいエラーのひとつです。
503 Service Unavailable
「503 Service Unavailable」はリクエスト先にアクセスが集中、またはメンテナンスなどでサーバーが一時的に利用できない状態になった場合に表示されるステータスコードです。ほとんどのレンタルサーバーでは過剰な負荷を防ぐため、データの転送量と同時アクセス数に上限を設けており、この上限数を超過すると503エラーが発生します。
たとえばTwitterのフォロワー数が数十万人というインフルエンサーがURLをシェアしただけでアクセス数が急増、503エラーが発生して通信制限がかかるということも珍しくありません。
HTTPステータスコードが表示された場合の主な対処法
HTTPステータスコードが表示された場合の対処法は、クライアントとWebサイトの管理者で異なります。特にWebサイトの管理者は、HTTPステータスコードをもとに適切かつ早急に対処しなければ、Webサイトを訪れてくれるユーザーを、ひいてはビジネスチャンスを失いかねません。ここではとりわけ頻繁に使用されるHTTPステータスコードについて、クライアントとWebサイトの管理者の対処法を紹介します。
403 Forbiddenの対処法
「403 Forbidden」はリクエスト先のアクセス権限がない場合に発生するので、クライアント側としては「Webサイトの管理者に問い合わせてみる」または「ネットワーク環境を変えてみる」程度しか対処法がありません。
一方、Webサイトの管理者側で予期せぬ「403 Forbidden」が発生した場合は、パーミッション(フォルダやファイルのアクセス権限)や「.htaccessファイル」(サーバー内にあるディレクトリを単位ごとに制御するファイル、ユーザー名とパスワードからなるBasic認証を行うことができる)の設定ミスが考えられます。
なお「403 Forbidden」が表示されているサイトはGoogleの評価対象にはなりませんが、アクセス権限がないクライアントに対して「403 Forbidden」をそのまま表示することはあまり印象が良くないため、リダイレクト処理を行い新しいサイトへ転送するなどの配慮が必要です。
404 Not Foundの対処法
「404 Not Found」が表示された場合、クライアント側の対処法としては、まず、アドレス欄に入力したURLが間違っていないか確認してみましょう。よくある間違いとしては、大文字と小文字、「:」(コロン)と「;」(セミコロン)の入力ミスがあげられます。
Webサイトの管理者は、アクセス先のサイトがリンク切れを起こしていないか、誤ってサイトそのものを削除していないかチェックしてみましょう。また、URLを変更した場合、旧URLから新URLへ転送されるのが一般的ですが、リダイレクト処理に不具合があっても「404 Not Found」が表示されます。
また、クライアントのリクエストに対しては「404 Not Found」と表示されるのに、検索エンジンではステータスコード「200」(正常)で処理されるという不具合が発生することもあります。これを「ソフト404」といい、HTMLを自動生成するツールで大量にサイトを制作したときに発生しやすい現象です。
検索エンジンは「正常」なサイトのコンテンツを分析し、ユーザーにとって有益かどうかを判断した上で検索結果を表示するので、ソフト404をそのまま放置しておくとサイトの評価が下がるおそれがあります。
ソフト404の対策としては、通常の「404」で処理できるオリジナルの404エラーページを作成するなどして、Googleの評価対象とならないような対策をとっておきましょう。
503 Service Unavailableの対処法
「503 Service Unavailable」は、リクエスト先に同時アクセスが集中しているなど、サーバー側に主な原因があるので、クライアント側の対処法としては通常のサイトが表示されるまで待つしかありません。
一方、Webサイトの管理者側の対処法としては、「多少コストがかかってもスペックが良い専用サーバーを導入する」「動画や画像を減らしてサイトの表示速度を改善し同時アクセス数を減らす」などがおすすめです。またレンタルサーバーのなかにも、一時的に同時アクセス数が増加した場合、最大アクセス数を拡張して503エラーの発生を防ぐことができる機能を持ったサーバーがあります。ぜひ、検討してみるといいでしょう。
HTTPステータスコードを放置することによる影響
前述したとおり「403 Forbidden」や「404 Not Found」といったHTTPステータスコードが表示されたサイトはGoogleの評価対象外なので、クライアントに迷惑がかかるような重篤なエラーでない限り、多少放置しておいてもSEO対策にはそれほど影響を及ぼしません。しかし、このようなHTTPステータスコードは決して見栄えの良いものではないため、いつまでも放置しておくとサイトのアクセス数が気付けば激減するおそれがあります。
また「503 Service Unavailable」が頻繁に発生しているのにサーバーを見直さずにいると、せっかくサイトを訪れた新規ユーザーをみすみす逃して、莫大な機会損失を招くことにもなりかねません。
こうしたトラブルを未然に防ぐためには、HTTPステータスコードが提示するエラーに対して、その都度、適切な対応を取ることが不可欠です。多少は面倒くさいですが、こうした地道な活動によってサイトが見やすくなり、アクセス数を増やすことにもつながります。HTTPステータスコードを参考に、SEO対策もバッチリなサイトを作り上げましょう。
HTTPステータスコードをWebサイトの改善に役立ててみよう
HTTPステータスコードで400番台と500番台が発生した場合、Webサイトの管理者またはサーバー管理者は、すぐに修正、または改善に取り掛からなくてはなりません。
たとえばクライアントには修正不可能な500番台のエラー(サーバーエラー)を放置しておくと、移り気なクライアントはすぐに他所へ行ってしまい、Webサイトはたちまち集客力を失ってしまいます。
しかし、こうしたエラーにきちんと向き合うことで、Webサイト全体のレベルアップにつながり、予期せぬトラブルが発生した場合も冷静に対処できるようになるでしょう。
HTTPステータスコードは活用するものといっても過言ではありません。これまで特に意識していなかったのであれば、ぜひ今後のWebサイト制作に生かしてみてはどうでしょうか。
RANKING ランキング
- WEEKLY
- MONTHLY
UPDATE 更新情報
- ALL
- ARTICLE
- MOVIE
- FEATURE
- DOCUMENT