ソフト404テスト
存在しないページはステータス404で応答すべきです。ところが、代わりに200を返したり、訪問者を黙ってトップページに送ったりするサイトがたくさんあります。このテストは、存在しえないアドレスを2つサーバーに要求し、その応答を報告します。
どの応答にも、訪問者には見えない数字がついている
サーバーがリクエストに応答するとき、返事の1行目は3桁のステータスコードです。ページはその後に続きます。人はページを読み、ソフトウェアは数字を読みます。200は「ご要望のものはこちら」、301は「移動しました、あちらを見てください」、404は「このアドレスには何もありません」、410は「意図的に削除しました」という意味です。
ソフト404とは、この2つが食い違っている状態です。画面の文章はページがないと言っている、あるいは訪問者が黙ってトップページに着地しているのに、数字はずっと200のままです。すると検索エンジンは行き止まりのアドレスをクロールし続け、ときにはインデックスまでします。リンクチェッカーはリンク切れをすべて正常と報告します。サイトの一部がまるごと消えていても、死活監視は緑のままです。
テストがリクエストする内容と判定方法
当サーバーはランダムな文字で2つのアドレスを作るので、実在するページと一致することはありません。1つはフォルダー形式(/probe-check-k7m2x9qa4t/)、もう1つはファイル形式(/h3n8v2c5w7pq.html)です。2つの形を使うのは、ウェブサーバーがファイル形式のリクエストには自分で応答し、それ以外はCMSに回すことが多いからです。リダイレクトはたどり、各段階のコードをすべて記録します。サイトがHTTPSでまったく応答しない場合は、通常のHTTPで試します。
| 返ってきたもの | 判定 |
|---|---|
リクエストしたアドレスで404または410 | 正常。 |
404ページで終わるリダイレクト | 警告。クローラーには伝わりますが、訪問者が入力したアドレスがアドレスバーで置き換わってしまいます。 |
リクエストしたアドレスで200 | ソフト404。 |
トップページ(/、/en、/index.php)へのリダイレクトで、200を返す | ソフト404。 |
ほかのページへのリダイレクトで、200を返す | ソフト404。 |
500以上 | エラー。未知のアドレスで何かがクラッシュしています。 |
401または403 | 警告。たいていは、サイトより先にファイアウォールのルールが応答しています。 |
エラーページも評価する
コードが正しい場合、テストはエラーページのHTMLを読み、迷った訪問者に必要なものがあるかを確認します。
- トップに戻る道。サイトのルートや各言語版のルートへのリンクなら、クリックできるロゴも含めて何でもかまいません。
- 説明。タイトル、見出し、本文のどこかに「404」「not found」「存在しません」「申し訳ありません」のような言葉が必要です。ヘッダー、メニュー、フッターを除いた本文が15語未満なら、内容が薄いと記録します。
- 検索欄。ない場合はひとことコメントします。不具合としては数えません。
<title>とlang属性。ブラウザーのタブやスクリーンリーダーが読み上げるものが必要です。- 重さ。HTMLが500 KBを超えると警告します。ボットは一日中、存在しないアドレスをリクエストしているからです。
nginx、Apache、IIS、LiteSpeedの標準ページは見分けて、そのように報告します。ロゴもリンクもないので、訪問者はサイトから離れてしまったと思います。2つのテストアドレスに明らかに違うページが返ってきた場合もお知らせします。ウェブサーバーとCMSがそれぞれ別のエラーページを持っているということです。
ソフト404を本物の404にする
- Apache
ErrorDocument 404 /404.html。ローカルパスを指定してください。完全なURLを書くと、Apacheはリダイレクトを送り、最終的なコードが200になってしまいます。- nginx
error_page 404 /404.html;。404とパスの間に=200があれば削除してください。- WordPress
- 本体はもともと
404を返します。「404をトップページにリダイレクト」のようなオプションを持つリダイレクト系やSEO系のプラグインを探して、オフにしてください。 - シングルページアプリケーション
index.htmlへの一括書き換えは、何に対しても200を返します。未知のルートはサーバー側で404ステータスつきで描画するか、ホスティングに任せてください(NetlifyとCloudflare Pagesは、ルートの404.htmlを正しいコードで配信します)。
変更はターミナルでcurl -I https://example.com/no-such-pageを実行して確認できます。最初にステータス行が表示されます。
ルートの2つのランダムなアドレスでは、サイト全体をカバーできません。サブフォルダーに入れたショップ、フォーラム、ブログは動きが違うことがあるので、そこでも架空のアドレスを手でテストしてください。当サイトはスクリプトを実行しないため、JavaScriptで描画されるエラーメッセージはここでは見えません。また、実在するけれど中身が空のページ(検索エンジンはこれも「ソフト404」と呼びます)は、外からは検出できません。
よくある質問
ソフト404エラーとは何ですか?
人にはページがないと伝え、ソフトウェアにはすべて正常だと伝える応答です。たいていは2つの形のどちらかです:ステータス200で配信される「見つかりません」ページか、未知のアドレスからトップページへのリダイレクトです。
404ページをすべてトップページにリダイレクトするのはSEOに悪いですか?
悪いです。Googleはトップページへの一括リダイレクトをソフト404として扱うので、評価は何も引き継がれません。訪問者も、なぜそこに着いたのかわかりません。古いアドレスは、それに代わるページへ301でリダイレクトする場合だけにして、残りは404を返すようにしてください。
削除したページは404と410のどちらを返すべきですか?
どちらも正しいです。410 Goneは削除が意図的かつ恒久的であることを伝え、検索エンジンはそのアドレスを少し早めに外す傾向があります。そのページが本当に存在したのか確かでないときは404を使ってください。
404エラーは検索順位に悪影響がありますか?
ありません。存在しないアドレスはウェブではごく普通のことで、サイトの減点にはなりません。損になるのは、自分のページ内のリンクがそうしたアドレスを指している場合や、人気のあった古いページが後継ページにリダイレクトできるのに404を返している場合です。
実在するページでSearch Consoleがソフト404と報告するのはなぜですか?
Googleは、空に見える実在のページにもこのラベルを使います。商品のないカテゴリー、結果のない検索、内容の読み込みに失敗したページなどです。内容を追加するか、ページの存在理由がないなら404を返してください。
ページのステータスコードを自分で確認するには?
ブラウザーの開発者ツールを開き、「ネットワーク」タブを選んで再読み込みします。最初の行にコードが表示されます。ターミナルなら、curl -Iの後にアドレスを続ければ同じことができます。