
HTTP では、404 HTTP ステータスコードは、 Web クライアント (ブラウザなど) がサーバーと通信できたものの、サーバーが要求されたリソースを提供できなかったことを示します。サーバーはリソースを持っていないか、リソースを持っているかどうかを開示したくない可能性があります。[ 1 ]このコードは、応答理由Not Foundと関連付けられることが多く、ページが見つからない、またはファイルが見つからないと呼ばれることがよくあります。
多くの場合、サーバーはエラー状況に応じたウェブページを生成し、クライアントがそれを表示します。そして、そのページにはエラーコードが表示されることがよくあります。この状況は比較的よく発生するため(つまり、リンク切れや無効なリンクが原因であるため)、このコードはワールドワイドウェブ上で最もよく知られているエラーコードの一つです。
HTTP を介して通信する場合、サーバーは、 Web ブラウザによるWeb ページへのリクエストなどのリクエストに対して、数値の応答コードと、オプション、必須、または許可されていない (ステータス コードに基づく) メッセージで応答する必要があります。コード 404 では、最初の桁は、Uniform Resource Locator (URL) の入力ミスなどのクライアント エラーを示します。続く 2 桁は、発生した特定のエラーを示します。HTTP の 3 桁のコードの使用は、FTPやNNTPなどの以前のプロトコルでの同様のコードの使用と似ています。HTTP レベルでは、404 応答コードの後に、人間が読める「理由フレーズ」が続きます。HTTP 仕様では、「Not Found」というフレーズが推奨されており[ 1 ]、多くの Web サーバーはデフォルトで、404 コードと「Not Found」フレーズの両方を含む HTML ページを発行します。
ページが移動または削除された場合、404エラーが返されることがよくあります。前者の場合、ほとんどのサーバー設定ファイルで設定できるURLマッピングまたはURLリダイレクト(301 Moved Permanentlyレスポンスを返すか、 URL書き換えを使用)を利用するのが望ましいです。後者の場合、410 Goneを返す必要があります。これらの2つのオプションは特別なサーバー設定が必要なため、ほとんどのWebサイトでは利用されていません。
404エラーは、指定されたURLが存在しないサーバー名を参照している場合に表示されるDNSエラーと混同してはいけません。404エラーは、サーバー自体は見つかったものの、要求されたページを取得できなかったことを示します。
一部のウェブサイトは、「200 OK」応答コードを持つ標準的なウェブページを返すことで「見つかりません」エラーを報告し、ページが正しく読み込まれたと誤って報告します。これはソフト404として知られています。「ソフト404」という用語は、2004年にZiv Bar-Yossefらによって導入されました。[ 2 ]
ソフト 404 は、リンクが壊れているかどうかを自動で検出する方法にとって問題となります。YahooやGoogleなどの検索エンジンは、自動プロセスを使用してソフト 404 を検出します。[ 3 ]ソフト 404 は、特定の HTTP サーバー ソフトウェアを使用する際の構成エラーの結果として発生することがあります。たとえば、Apacheソフトウェアでは、エラー ドキュメント 404 ( .htaccessファイルで指定) が相対パス (/error.html) ではなく絶対パス (例: http://example.com/error.html ) として指定されている場合です。[ 4 ]また、これは、一部のブラウザ ( Internet Explorerなど) に、ブラウザ固有の「フレンドリー」なエラー メッセージで提供されるものを置き換えるのではなく、カスタマイズされた 404 エラー メッセージを表示させるために意図的に行うこともできます (Internet Explorer では、この動作は 404 が提供され、受信した HTML が一定の長さより短い場合にトリガーされ、ユーザーが手動で無効にすることができます)。
また、「ソフト3XX」エラーと呼ばれるものもあり、これはステータス200でコンテンツが返されるものの、リダイレクトされたページからのものである場合を指します。例えば、存在しないページがドメインのルート/ホームページにリダイレクトされる場合などです。
プロキシサーバーによっては、500番台のエラーコードの方が適切な場合でも、404エラーを返すことがあります。プロキシサーバーがリモートホストの問題(ホスト名の解決失敗やTCP接続の拒否など)によりページの要求に応えられない場合、これは5xx内部サーバーエラーとして説明されるべきですが、代わりに404エラーを返す可能性があります。特定の応答を期待してそれに基づいて動作するプログラムは、Webサーバーが存在しない場合と、Webサーバー上にWebページが存在しない場合を容易に区別できなくなるため、混乱する可能性があります。
2004 年 7 月、英国の通信事業者BT グループは、インターネット ウォッチ財団によって違法である可能性があると特定されたコンテンツへのリクエストに対して 404 エラーを返すCleanfeedコンテンツ ブロッキング システムを導入しました。[ 5 ]他の ISP は、同じ状況でHTTP 403 "禁止" エラーを返します。 [ 6 ]偽の 404 エラーを検閲を隠蔽する手段として利用する行為は、タイ[ 7 ]とチュニジア[ 8 ]でも報告されています。2011年の革命以前に検閲が厳しかったチュニジアでは、人々は偽の 404 エラーの性質を認識し、「見えない検閲者」を表す「Ammar 404」という架空の人物を作り出しました。[ 9 ]
マイクロソフトが開発したウェブサーバーソフトウェアであるInternet Information Services(IIS)は、404エラー応答時に一連のサブステータスコードを返します。サブステータスコードは、404ステータスコードに付加された10進数の形式をとります。これらのサブステータスコードはIANAによって公式に認められておらず、マイクロソフト以外のサーバーからは返されません。
MicrosoftのIIS 7.0、IIS 7.5、およびIIS 8.0サーバーは、404エラーのより具体的な原因を示すために、次のHTTPサブステータスコードを定義しています。

Web サーバーは通常、より自然な説明、親サイトのブランディング、場合によってはサイト マップ、検索フォーム、または 404 ページ ウィジェットを含むカスタマイズされた 404 エラー ページを表示するように構成できます。ユーザーには非表示になっているプロトコル レベルのフレーズは、カスタマイズされることはほとんどありません。ただし、 Internet Explorerは、カスタム ページが 512 バイトより大きい場合を除き、カスタム ページを表示せず、代わりに「フレンドリー」なエラー ページを表示することを選択します。[ 10 ] Google Chromeには同様の機能が含まれており、ページ サイズが 512 バイト未満の場合、404 は Google アルゴリズムによって生成された代替の候補に置き換えられます。[ 11 ]もう 1 つの問題は、ページにファビコンが提供されておらず、別のカスタム 404 ページが存在する場合、ページ ビューごとに余分なトラフィックと長い読み込み時間が発生することです。[ 12 ] [ 13 ]
多くの組織は、本来は真面目なウェブサイトになりがちなものにユーモアを注入する機会として、404 エラー ページを利用しています。たとえば、Metro UK はスケートボードに乗ったホッキョクグマを表示し、ウェブ開発会社 Left Logic はシンプルな描画プログラムを提供しています。[ 14 ] 2015 年の英国総選挙キャンペーン中、主要政党はすべて、政治的対立者を攻撃したり、潜在的な支持者に関連政策を示したりするために、404 ページを利用しました。[ 15 ]ヨーロッパでは、Missing Children EuropeやChild Focusを含む複数のヨーロッパの組織によって作成されたNotFound プロジェクトは、サイト運営者にカスタマイズされた 404 エラー ページを提供するコード スニペットを追加することを推奨しています。 [ 16 ]これらのページは、行方不明の子供に関するデータを提供します。[ 17 ]
多くのウェブサイトは、404 エラー メッセージにウェブサイトのホームページへのリンクや検索ボックスなどの追加情報を送信しますが、ユーザーが求めていた正しいウェブ ページを見つけようとするウェブサイトもあります。一部のコンテンツ管理システム(CMS) には、これを行うための拡張機能が用意されています。 [ 18 ]
ウェブサイトをクロールして 404 ステータス コードを返すページを見つけるツールがいくつか存在します。これらのツールは、特定のウェブサイト内に存在するリンクを見つけるのに役立ちます。これらのツールの制限は、特定のウェブサイト内のリンクしか見つけられず、他のウェブサイトのリンクから発生する 404 を無視することです。その結果、これらのツールはウェブサイト上の 404 の 83% を見逃します。[ 19 ]この問題を解決する 1 つの方法は、外部リンクを分析することによって 404 エラーを見つけることです。[ 20 ]
404エラーを発見する最も効果的な方法の1つは、Google Search Console、Google Analytics、またはクローリングソフトウェアを使用することです。
もう1つの一般的な方法は、ログファイル分析を使用して404ページへのトラフィックを追跡することです。[ 21 ]これは、ユーザーがサイト上でどの404ページに到達したかをよりよく理解するのに役立ちます。404ページへのトラフィックを追跡するもう1つの方法は、JavaScriptベースのトラフィック追跡ツールを使用することです。[ 22 ]