HTTPステータスコード

Webページを閲覧していると,「404 Not Found」や「500 Internal Server Error」「503 Service Unavailable」といったエラーページを目にするかと思います。これは,何らかのエラーが発生してブラウザ画面に表示するメッセージですが,これらの数字にはそれぞれ意味があり,正式には「HTTPステータスコード」といいます。HTTPステータスコードには3桁の数字が割り当てられています。1桁目の数字は分類を表し,「4xx」がクライアントからのリクエストのエラー,「5xx」がサーバ上で発生したエラーを意味しています。また,エラーとして表示されないため,通常は目にすることはありませんが,「1xx」〜「3xx」も存在します。

目次

1. 分類

HTTPステータスコードは,「1xx」〜「5xx」の5つに分類されます。100番台,200番台は通常は意識することはないでしょう。300番台はページを引っ越した場合(URLが変更された場合),リダイレクトの設定をするときに見たことがあるかと思います。400番台はURLの間違い,パスワードの間違いなどクライアントからのリクエストに誤りがあった場合に発生します。500番台はプログラムの文法ミスや,アクセスが殺到した場合などサーバでリクエストが正常に処理できなかった時に発生します。

  • 1xx Informational (情報)
    クライアントからリクエストが受け入れられ,サーバ上で処理が継続されている
  • 2xx Successful (成功)
    クライアントからリクエストが成功した
  • 3xx Redirection (リダイレクション)
    リクエストを完了させるために,他のURLを参照する必要がある
  • 4xx Client Error (クライアントエラー)
    クライアントからのリクエストにエラーがあるため,リクエストに失敗した
  • 5xx Server Error (サーバエラー)
    サーバ側の問題により,リクエストに失敗した

2. 覚えておきたいコード

HTTPサーバの生ログを読む必要があるサーバ管理者であれば,日常的にHTTPステータスコードを目にしているでしょう。ここでは,サーバ管理者の諸兄姉向けでなく,Webサイトの企画者やデザイナーを対象に覚えておいて損はない「HTTPステータスコード」をご紹介します。

301 Moved Permanently

「301 Moved Permanently」はエラーでないため,Webページを閲覧しているだけでしたら目にすることはないでしょう。ブラウザ画面に表示することはありませんが,WebページもしくはWebサイト全体が引っ越しした場合(URLやドメインが変更になった場合),「.htaccess」ファイルに301リダイレクトを設定することはあるかと思います。

RewriteEngine on
RewriteRule ^index\.html$ index.php [R=301,L]

※「.htaccess」ファイルの設定例。index.htmlをindex.phpに301リダイレクト。

400 Bad Request

ブラウザから送信されたリクエストに問題があった場合に発生します。このエラーに遭遇することは,それほど多くはないかと思います。使用したブラウザに問題がある場合が多いので,他のブラウザ(他のバージョンを含む)でアクセスしたり,Cookieやキャッシュのクリア,プラグインの無効化を試してみてください。

401 Unauthorized

Basic認証やDigest認証などで,パスワードが間違っていた場合に表示されるエラーです。入力したID及びパスワードを再確認してください。サーバ側のパスワード設定が誤っている場合もあります。サーバの管理権限がある場合は,パスワード設定ファイルも確認してください。

403 Forbidden

ページが存在するものの,閲覧が禁止されたファイルもしくはディレクトリにアクセスした場合に表示されるエラーです。通常は,サイト管理者が意図してアクセス権を設定しています。まれに,サイト管理者の設計や設定のミス,非常にアクセスが集中している時,URLが間違っている場合もあります。時間をあけてアクセスしたり,URLを再確認してください。また,サーバの管理権限がある場合は,該当ファイルのパーミッションを見直してください(「.htaccess」ファイルでアクセス制御している場合もあります)。

404 Not Found

ページが削除されたり,引っ越しした場合(URLが変更された場合)に表示されるエラーです。比較的遭遇する確率が高いエラーです。もともと,存在しないページアクセスした場合もこのエラーが表示されます。URLを再確認してからアクセスしてください。サイト管理者の場合は,サーバにファイルをPUTし忘れていないか,誤ったディレクトリにファイルをPUTしていないか,誤ってページを削除していないか確認してください。

500 Internal Server Error

プログラム(スクリプト)の文法ミスや,プログラムがアクセスするファイルやディレクトリのパーミッションの設定に誤りがある場合に表示されます。プログラムのチェック,パーミッションの見直し,「.htaccess」の設定確認を行ってください。サーバ上の一時的な問題で,ブラウザーをリロードすると正常にページが表示される場合もあります。

503 Service Unavailable

サーバの負荷が限界を超えている場合や,サーバのメンテナンスでブラウザからのリクエストを受け付けることができない場合に表示するエラーです。レンタルサーバの場合,他の利用者がサーバに高負荷がかかるCGIを動かしている場合もあります。暫く時間をあけてからアクセスしてください。

3. コード一覧

1xx Informational

  • 100 Continue
    クライアントはリクエストを継続できる
  • 101 Switching Protocols
    サーバーはプロトコルを切り替えている
  • 102 Processing
    処理が継続されている

2xx Successful

  • 200 OK
    リクエストが成功した
  • 201 Created
    リクエスト完了(PUTメソッド)
  • 202 Accepted
    リクエスト未完(PUTメソッド)
  • 203 Non-Authoritative Information
    非認定情報
  • 204 No Content
    ブラウザ画面を更新しない
  • 205 Reset Content
    ブラウザ画面を初期化する
  • 206 Partial Conten
    レジューム(部分的GETリクエスト)
  • 207 Multi-Status
    複数のステータスが存在する
  • 226 IM Used
    Delta encoding in HTTP の拡張ステータス

3xx Redirection

  • 300 Multiple Choice
    リクエストに対して複数のレスポンスがある(それらからひとつを選択する)
  • 301 Moved Permanently
    リクエストしたリソースが恒久的に異なるURIに移動
  • 302 Found
    リクエストしたリソースが一時的に異なるURIに移動
  • 303 See Other
    リクエストに対するレスポンスは異なるURIで発見(GETメソッド)
  • 304 Not Modified
    リクエストしたリソースは更新されていない
  • 305 Use Proxy
    (セキュリティの懸念により非推奨)
  • 306 (unused)
    (未使用)
  • 307 Temporary Redirect
    一時的リダイレクト(リクエストのメソッドはリダイレクト前後で同じであること)
  • 308 Permanent Redirect
    恒久的リダイレクト(リクエストのメソッドはリダイレクト前後で同じであること)

4xx Client Error

  • 400 Bad Request
    リクエストがサーバに理解されなかった
  • 401 Unauthorized
    ユーザ認証に失敗した
  • 402 Payment Required
    (未使用)
  • 403 Forbidden
    アクセス権限がない
  • 404 Not Found
    リクエストしたURLが存在しない
  • 405 Method Not Allowed
    リクエストしたメソッドは不許可
  • 406 Not Acceptable
    リクエストは受理できない
  • 407 Proxy Authentication Required
    プロキシに対する認証が必要
  • 408 Request Timeout
    リクエストが時間以内に完了していない
  • 409 Conflict
    リクエストが現在のリソースと矛盾する
  • 410 Gone
    リクエストしたリソースが存在しない
  • 411 Length Required
    Content-Lengthのないリクエストの受理を拒否
  • 412 Precondition Failed
    リクエストが不正であると評価された
  • 413 Payload Too Large
    リクエスト実体がサーバーの想定よりも大きい
  • 414 URI Too Long
    リクエストURIがサーバーの想定よりも大きい
  • 415 Unsupported Media Type
    リクエストされたリソースがサーバでサポートしていないフォーマットである
  • 416 Requested Range Not Satisfiable
    リクエストされたデータのサイズが超過した
  • 417 Expectation Failed
    Expectヘッダによる拡張が失敗した
  • 418 I’m a teapot
    (ジョークコード)
  • 421 Misdirected Request
    リクエストはレスポンスを生成できないサーバーに送られた
  • 422 Unprocessable Entity
    意味が誤っているために従うことができない(WebDAVの拡張コード)
  • 423 Locked
    アクセス中のリソースはロックされている(WebDAVの拡張コード)
  • 424 Failed Dependency
    依存関係でリクエストに失敗した(WebDAVの拡張コード)
  • 426 Upgrade Required
    プロトコルのアップグレードを要求(Upgrading to TLS Within HTTP/1.1の拡張コード)
  • 428 Precondition Required
    リクエストが条件付きになる(ロストアップデート問題の防止)
  • 429 Too Many Requests
    一定の時間内に大量のリクエストを送信した
  • 431 Request Header Fields Too Large
    ヘッダーフィールドが大きすぎる
  • 451 Unavailable For Legal Reasons
    違法なリソース(政府によって検閲されたウェブページ)を要求した

5xx Server Error

  • 500 Internal Server Error
    サーバ内部でエラーが発生
  • 501 Not Implemented
    リクエストメソッドがサーバでサポートされていない
  • 502 Bad Gateway
    ゲートウェイ・プロキシサーバは不正な要求を受け取った
  • 503 Service Unavailable
    サービスが一時的に過負荷やメンテナンス中である
  • 504 Gateway Timeout
    ゲートウェイとして動作するサーバが時間内にレスポンスを得られない
  • 505 HTTP Version Not Supported
    リクエストがサポートされていないHTTPバージョンである
  • 506 Variant Also Negotiates
    サーバー内部で設定エラーが発生した(Transparent Content Negotiation in HTTPの拡張コード)
  • 507 Insufficient Storage
    リクエストを処理するためのストレージの容量が足りない(WebDAVの拡張コード)
  • 508 Loop Detected
    リクエストの処理中に無限ループを検出した(WebDAVの拡張コード)
  • 509 Bandwidth Limit Exceeded
    そのサーバに設定されている帯域幅を使い切った
  • 510 Not Extended
    サーバーがリクエストを処理するために拡張が必要(An HTTP Extension Frameworkの拡張コード)
  • 511 Network Authentication Required
    クライアントがネットワークでアクセスするために認証が必要

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次