ブラウザでWebサイトを閲覧した際に、「404 Not Found(以下404エラーと呼びます)」というメッセージが表示されてしまうことがあります。ブラウザやサーバー側の設定によってメッセージに多少の差異はありますが、これはアクセスしようとしたページが見つからなかった場合にサーバーが返すレスポンスのことで、404エラーはページが存在しないことを示すステータスコードと呼ばれるものです。この記事では404エラーが発生してしまう主な原因と対処法について解説します。
404 not found(404エラー)の意味とは?
404 not foundとは、アクセスしようとしたページが見つからないという意味です。
Googleの404ページ
エラーコード「404」の意味
エラーコード404は大きく分けて二つの意味を持ちます。
・ページが存在しない
・サーバーがダウン(サーバー落ち)している
一つは冒頭で説明させていただいたようにページが存在しないことを意味します。そのURLに該当するページが無いということなので、ブラウザや端末を変えても解決しません。
もう一つはアクセス中のサーバーが障害などの理由でダウンしていてアクセスができない状態です。前者と違い、サーバーが復旧すればアクセスできる可能性があります。
ステータスコード
404エラーの404は、ステータスコードと呼ばれます。正確には「HTTPレスポンスステータスコード」という名称です。特定のHTTPリクエストが正常に完了したかどうかを示すレスポンスのことで、404をはじめとする400番台のコードはクライアントエラーに関するものとなります。
ステータスコードは以下でも解説しています。
「お探しのページは見つかりませんでした。」のパターン
「お探しのページは見つかりませんでした。」のパターンには以下のようなものがあります。エラーメッセージは常に同じではなく、サーバーやOS、ブラウザなどの環境の違いにより幾つかの似ているパターンが見られます。
似ているパターン
似ているパターンとして、以下のようなメッセージをよく見かけます。
404 - file or directory not found.
→サーバーにファイルまたはディレクトリが存在しない
the requested url was not found on this server.
→リクエストされたURLがサーバーで見つからない
the requested document was not found on this server.
→リクエストされたドキュメント(ファイル)がサーバーで見つからない
the requested resource / was not found on this server.
→リクエストされたリソース(ファイル)がサーバーで見つからない
net::err_aborted 404
→CSSやJavaScriptなどのファイルの置き場所が間違っている
404 not found(404エラー)の原因
404エラーの原因として、いくつかの理由が考えられます。
・URLが間違っている
→手入力したURLにタイプミスがあった場合、またはページのリンク先のURLのスペルがそもそも間違っている場合です。
・サーバー側で削除されたURLにアクセスしている
→すでにサーバー側ではページが削除されているのにアクセスしようとした場合です。
・サーバー側でURLの変更があったが、リダイレクト設定が出来ていない
→古いURLから新しいURLへの移動を促すリダイレクト設定がされていない場合です。
通常、WebサイトでURLの変更があった場合、サイト管理者は古いURLから新しいURLへ自動的にページ遷移するようリダイレクト設定を行います。これは住居の引越をした時に旧住所宛の郵便物を新住所に届けてもらう転送届のようなものです。
・URLがリンク切れしている
→その時はリンク先のページが表示されていたものの、時間経過やリンク先が削除・変更されるなどしてリンク切れしてしまった場合です。そのWebサイトとは異なるWebサイトへのリンク(外部リンク)を貼っている場合によく見られるパターンです。
404 not found(404エラー)はSEOに悪影響?
404 not foundはSEOに悪影響を及ぼすのでしょうか?結論から言うと、404エラーが直ちにSEO…分かりやすく言えば検索順位に悪い影響を及ぼすとは言えません。404エラーは決して珍しいものではなく、至る所で見ることが出来る現象です。そのような状況をGoogleに代表される検索エンジンは織り込み済みであると考えられます。
ただし、404エラーが発生する原因によっては対処が必要な場合もあります。URLリンクの間違いや変更に対して404エラー以外のコードを返すような場合です。
(※後述のソフト404エラーを参照)
検索エンジンのクローラー(※)は本来であれば404エラーを認識してページが無いものと判断しますが、404エラーのステータスコードが返ってこないことによってその先にページがあるものと判断し、URLのクローリングを続けてしまいます。それによってサイト全体を正常にインデクシングしなくなり、検索結果に影響が出る恐れがあります。
※クローラー:公開されているWebサイトをクローリング(巡回)して検索結果に反映させるプログラムのロボットです。
404エラーとソフト404エラーの違い
404エラーには実は種類があり、通常の「404エラー」と「ソフト404エラー」に分けられます。では404エラーとソフト404エラーの違いは何でしょうか?
ソフト404エラーとは、URLにアクセスした時にページが存在しないことをユーザーに伝えるためのページを表示させ、ステータスコード200(「成功」の意味)を返すことを言います。通常の404エラーとの違いはステータスコード404を返さないこと、コンテンツの中身がないようなページ(空白ページやカスタマイズしたページ)を表示させることです。
上記SEOへの影響で説明した通り、ページが見つからなかった場合に404を返さないことは検索エンジンのクローラーに正しくページをクローリングしてもらえないことになり、クローラーのリソースを無駄に使用させることにもなります。また一方で、Googleは通常の404エラーではサイトの評価に影響しないということを表明しています。
以上より、通常の404エラーのようにステータスコード404を返さないソフト404エラーは推奨されていません。
404エラーはデザインがある
404エラー画面は画一的なものでなく、幾つもの優れたデザインがあります。サーバーによりますが、大抵の場合404エラー発生時に表示させるページのデザインに関するテンプレートファイルが存在します。404ページのメッセージ内容やデザインをカスタマイズしたい場合、そのテンプレートファイルを編集することになります。
デザインする必要性については賛否ありますが、標準の白背景に黒文字で「404 Not Found」のページではユーザーが別サイトに離脱してしまう可能性が高いです。
よくあるカスタマイズとして、そのWebサイト内の別のコンテンツページへのリンク(内部リンク)を設置して引き続き閲覧をしてもらう方法があります。オリジナルの404エラーページを用意することで、別コンテンツに誘導したりサイトのブランディング効果を高めて離脱を抑える(=SEO効果を上げる)ことが期待できます。
どのようなデザインであっても重要なことは、そのページが存在しないことを明確に伝えるということです。
wikipediaの404ページ
microsoftの404ページ
Yahoo!JAPANの404ページ
404 not found(404エラー)でも見る方法はある?
404エラーでもページを見る方法はあるでしょうか?実は閲覧する方法があります。
Google検索結果キャッシュの確認
Googleの検索窓に閲覧したいWebサイトのキーワードやURLを入力します。
目的のWebサイトが載っている検索結果ページを表示させます。
検索結果に表示されているURL右端の「▼」を選択します。
「キャッシュ」という項目が出るので選択します。
※スマホの場合、ブラウザ初期設定のままではGoogle検索結果のキャッシュが表示されないので、ブラウザのアドレスバー端のアイコン(「…」や「AA」など)から「デスクトップ用サイト」または「PC版サイト」といった項目にチェックを入れてから検索します。
・Internet Archiveキャッシュの確認
1.Internet Archiveの検索窓に閲覧したいWebサイトのURLを入力します。
https://archive.org/
2.検索結果が表示されたら、カレンダーで色のついた最新の日付を選択します。
※検索結果が見つからない場合はURL末尾を”/”単位で消してから再検索します
3.キャッシュされたタイムスタンプを選択します。
★注意事項
GoogleやInternet Archiveによるクローリングが行われていない場合、検索結果に掲載されて間もない場合はキャッシュが作られていないため閲覧することは出来ません。
404リダイレクトのページ転送方法
404リダイレクトのページ転送方法は、PHPのコードで404を返す方法と、WordPressで判定する方法があります。
PHPで404を返す
PHPのheader関数を使ってHTTPステータスを設定します。PHPファイルに記載します。
ーーーーーーーーーーーーーーーーーーー
$redirectUrl = “http://www.example.com/404.html”;
// 404を返すページのURLを設定します
header( “HTTP/1.1 404 Not Found” );
// header関数内に404エラーメッセージを記述します
print(file_get_contents($redirectUrl));
// エラーページのHTMLを読み込んで表示させます
exit;
ーーーーーーーーーーーーーーーーーーー
※404ページに画像やCSS(スタイルシート)などの外部ファイルを相対パスで指定しているとリンク切れになる可能性があるため、絶対パスで指定する必要があります。
WordPressで404を判定する方法
WordPressで404を判定する方法は、PHPの関数を使うやり方があります。WordPressは元々PHP言語を使って作られているので、”is_404”という関数で判定することが可能です。WordPressテーマフォルダ内にある”header.php”ファイル内の~の中に以下のように記述します。
※PHPファイルの変更前は、必ずバックアップを取り自己責任で行っていただくようお願いします。
ーーーーーーーーーーーーーーーーーーー
<?php if(is_404()){ ?>
<meta http-equiv=”refresh” content=”3; URL=https://www.example.com”>
<?php } ?>
ーーーーーーーーーーーーーーーーーーー
リダイレクトするまでの秒数を「content=」で、リダイレクト先のURLを「URL=」でそれぞれ指定しています。
・WordPressのテーマフォルダの例
なお、WordPressに404ページを設置する場合は、WordPressテーマフォルダの中に”404.php”というファイルを作成し、404ページに表示させたい内容をPHPファイル内に記載すれば可能です。テーマフォルダ内に既に”404.php”が存在する場合はファイルを新規作成する必要はなく、必要に応じて中身を書き換えるだけでOKです。
☆補足
「404リダイレクト」という呼び方は慣例であり、正確には「404ページの読み込み表示」です。
まとめ
404エラーは様々な原因で発生しますが、どのパターンでもアクセスしようとしたページが存在しないという意味は共通です。対処としてはユーザー側でできるものとサーバー管理者側に修正してもらう必要があるものに分けられます。
ユーザーがWebサイトを閲覧する際、URLの手入力はミスタイプにつながるのでなるべく控えた方が賢明です。またサーバー管理者はサイトのリンク先やリダイレクトが適切に設定されているか確認し、必要に応じてカスタマイズした404ページを表示することでよりSEOを意識したサイトとなるよう管理しましょう。