HTTP 404
HTTP |
---|
主要項目 |
リクエストメソッド |
ヘッダーフィールド |
ステータスコード |
認証方式 |
セキュリティホール |
HTTP 404、またはエラーメッセージ Not Found(「未検出」「見つかりません」の意)は、HTTPステータスコードの一つ。クライアントがサーバに接続できたものの、クライアントの要求に該当するもの (ウェブページ等) をサーバが見つけられなかったことを示すもの。また、要求に応えられない理由をごまかすためにも使われる。
ウェブブラウザが表示する「サーバが見つかりません」のようなメッセージは、サーバとの接続に失敗したことを表すもので、404とは別である。
概要
[編集]HTTPを使って通信を行うとき、ブラウザによるHTML文書(ウェブページ)などの要求に対して、サーバは応答を返すように求められる。応答には、数値によるステータスコードと電子メールのようなヘッダーと本文が含まれる。ステータスコード404では、最初の「4」がクライアント側のエラー(URLのミスタイプなど)を表し、続く「04」がエラーの種類を表す。こうしたHTTPの3桁のコードは、FTPやNNTPのようなHTTP以前からあるプロトコルに似ている。
この数字はWWWが発明された欧州原子核研究機構(CERN)の404という部屋番号にちなんで付けられたという都市伝説があるが、実際にはCERNには404という部屋はない[1]。
ステータスコードの数字にはたいてい英語のテキスト[2]が加えられる。404の場合は「Not Found」である。サーバは通常、404の応答とともに「404 File not found」のように数字とメッセージを記述した短いページを送信する。日本語では「ファイルが見つかりません」「ページが見つかりません」のような記述になる。サーバアプリケーションのデフォルトのメッセージを使わずに、404用のページをカスタマイズしているサーバーも多い。たとえばApache HTTP Serverでは、.htaccessファイルやhttpd.confを書き換えるとそうしたカスタマイズができる。
Internet Explorer(IE6以前)では、512バイト以下の場合は送信された404用のページを表示せずに、代わりに「親切な」エラーページを表示する。この動作は、「インターネットオプション」の「詳細設定」で「HTTPエラーメッセージを簡易表示する」のチェックを外すことで変更できる。
404は、サーバ上のページが移動されたり削除されたりしたときにも送られることがある。しかし本来、移動された場合は「301 Moved Permanently」、削除されたときは「410 Gone」を返すべきである。ただ、301や410を返すには特別な設定が必要なので、多くのウェブサイトはそうした設定をしていない。
WWWでは404の表示をよく目にするため、404は"人や物が見つからないこと"を意味する言葉になった。ユーモラスな404ページを作ることが流行ったり、いろいろな404ページを集めることだけを目的にしたサイトが作られたりしている。
ソフト404
[編集]ウェブサイトの中には、「ファイルが見つからない」ことを示すために、成功を表すステータスコード「200 OK」とともにウェブページを送るものもある。これは「ソフト404」と呼ばれている。ソフト404の問題は、リンクが切れているかどうかを自動的に調べられないことである。ソフト404を判別する方法はBar-Yossefなどが発表している[3]。
関連項目
[編集]脚注
[編集]- ^ “404 RESFARCH LAR”. 1999年10月3日時点のオリジナルよりアーカイブ。2011年4月23日閲覧。
- ^ RFC 2616の6.1.1節にしたがえば、このテキストは空でもよい。制御文字以外の文字と水平タブと半角スペースを含むことができるとする文字の規定はあるが、言語の規定はない。
- ^ “Sic Transit Gloria Telae: Towards an Understanding of the Web’s Decay”. 2005年11月26日時点のオリジナルよりアーカイブ。2004年5月22日閲覧。 PDF (232 KiB), §3, submitted to the 13th World Wide Web Conference in New York City, 2004年5月17日-22日 (WWW 2004).
外部リンク
[編集]- ErrorDocument ディレクティブ - Apache 2.0の設定方法
- The Perfect 404 - 404ページの作り方(英語)
- 404 Research Lab - さまざまな404メッセージ(英語)