【ソフト404】404ページをインデックス登録する方法(ソフト404の話)
〜 404.html にHTTPステータスコード一覧表を掲載したけど全然Googleにインデックス登録されなかった話 〜

備忘録シリーズ第2弾です。2024年10月作成。
前回は10年以上前に iMac 買い換え時のデータとかアプリとかの環境移行についてまとめたのですが、今回は 404.html にHTTPステータスコード一覧表を掲載したけど全然Googleにインデックス登録されなかった話について詳しくまとめてみました。

「そんなことで困っている人はまずいないだろう」という意味で前回よりさらにマニアックな感じになっていますが、一応公開しておきます。


𓃠


当サイト(fragment.database.)は2013年に開設以来ずっと ぷらら(plala)のプライベートホームページで運用してきたのですが、2024年8月に独自ドメイン(レンタルサーバ)に引っ越しました。

レンタルサーバへ引っ越ししたことにより、「.htaccess」というサーバの動作を直接制御するファイルが編集可能となったことから、存在しないページにアクセスしようとした際に表示される404エラーページも自作(カスタマイズ)可能となりました。

で、どうせ作るなら尖ったエラーページの方が良いと思い、「404 Not Found」も含む全てのエラーコードを集めた日本一情報量の多い404ページ(エラーページ)を目指して作ったものの、何日たってもGoogleにインデックス登録されません。。。
サイトマップも Search Console からちゃんと送信しているのに。
これまでは作成→サイトマップ更新後数日でインデックス登録されていましたが、今回は一向に登録される気配がありません。

まぁ作っている最中から「そもそも404ページってGoogleにインデックスされるのかな?」ってぼんやり考えていましたが。
404ページに情報を盛り込んだところで、そもそもインデックスされなければ誰も見に来てくれない → 全く活用されない → 全く意味が無い。

何とかしなければ、と思ったものの、そんなアホなことをしようとしている人は他にいないためか、ネットには全く手掛かりとなる情報無し。
これは自分で何とかするしかないタイプの問題ですね。


𒆙


とりあえず登録されないってことは何らかのエラーが出ているだろう,と思い、Search Console にてどんなエラーが出ているか確認。
「ページのインデックス登録」で 404.html は「検出 - インデックス未登録」に分類されていました。
そもそもサイトマップ送信後一度もクロールしてもらえておらず、未登録となっているようです。

さらに「公開URLをテスト」で詳しく見ていくと、「ページの可用性」というところに警告が出ており、
「ページをインデックスに登録できません:ソフト404」
とのこと。


[ソフト404]


ソフト404? 何じゃそれ。
「ソフト99」なら知ってますが、そんなオヤジギャグ要りませんよね。
でも個人的には大変お世話になっておりますので、一応商品リンクを張っておきます。
何じゃそれ。


𓃰


早速「ソフト404」について調べてみました。

サイトによって書いてあることがバラバラ(あるいは分かりにくい)で、明確な定義は無いようですが、ソフト404とは


①:ユーザーが見たとき
 ☞「404 Not Found!」的なメッセージを表示
   (見た目が HTTPステータスコード404)
   あるいはコンテンツが(見た目上)全く存在しない
②:クローラーからアクセスしたとき
 ☞ ページのソースが存在し、正しく表示されている
   HTTPステータスコード「200 OK」がサーバーから返される

で、①と②が整合していないというエラー(の一種)


ということになります。
ソフト404を一言で突き詰めて言うと


「存在しないはずのページが存在していること」


ということになりますが、さらに突き詰めると
「今我々が見ている目の前のものは本当に存在するのか?」
「存在とは?」

といった、どんどん哲学的な話となってしまいます。

Google検索の「AI による概要」でも、


「ソフト404エラーとは、コンテンツが存在しないページが、サーバーからステータスコード「200」で返されるエラーです。ユーザーには「ページが見つかりません」などのコンテンツのないページが表示されますが、検索エンジンはコンテンツのあるページだと認識します。」


となっており、上記の理解でどうやら正しいようです。

ソフト404のエラーメッセージを作るとすると、次のような感じでしょうか。


Soft404 : A Page That Should Not Exist Exists


...受験英語みたいですね。

そもそも、サーバーがソフト404のエラーメッセージを返したら、それはすでにその時点でソフト404ではないと言えますし・・・
いずれにしてもソフト404について考えれば考えるほど哲学的な話となってしまいますね。

今回私がやろうとしている(していた)ことを今までの話に当てはめると、


①:ユーザーから見たとき
 →(見た目は)正常なページが存在
  (ただし内容には「ステータスコード404」に関連するデータを含む)
②:クローラーからアクセスしたとき
 →エラーページなので、.htaccess の転送先としてステータスコード404 がサーバーから返される


となり、上記の話とはむしろ逆ではないかと思いましたが、ここでハタと気づきました。


②:クローラーが「.htaccess の転送先としての 404.html」にアクセスしたとき
 → .htaccess の転送先なので、ステータスコード404(Not Found) と認識
②':クローラーが「サイトマップに登録されている 404.html」にアクセスしたとき
 →サイトマップに登録されており、かつ正常なコードが記載されているので、ステータスコード200(OK) と認識

で、②と②'が整合していない


という理由で(通常のパターンとは若干異なりますが)「ソフト404」と認識されているのではないかと。

ややイレギュラーですが「存在しないはずのページが存在していること」という意味では同じですね。


𒀭


404.htmlはもともと、
👉 存在しないページにアクセスしようとした際に表示されるエラーページ
かつ
👉「404 Not Found」も含む全ての HTTPステータスコードを集めた日本一情報量の多い404ページ
の両立を目指して作成したものですが、上記の内容が正しければ、この2つを両立させることは無理筋のようです。

もしかしたら、どこから 404.html にアクセスしてきたのかを判断して
リンクからのへのアクセスに対しては HTTPステータスコード200
検索結果からのへのアクセスに対しては HTTPステータスコード200
.htaccessで転送されてきた場合は HTTPステータスコード404
といったように振り分ければ良いのかもしれませんが、私にそういった技術はないので却下しました。

試しに 404.html を一旦 .htaccessの転送先から外して Search Console で「公開URLをテスト」してみると「ページの可用性」の警告が消えたこともあり、結局404.htmlをエラーページとして使用するのを断念し、.htaccessの転送先の404ページを「error_404.html」として新設し、様子を見ることにしました。


[可用性OK]


これでどうだ!

⬇️

数日後、404.html は無事 Googleにインデックス登録されました 💮


𓆉


その後もいろいろと調べていたら、Googleの開発者向けサイトに下記の記載がありました。


カスタム 404 ページは、ユーザーのためにカスタマイズして作成されるページです。こうしたページは検索エンジンの観点からは無用なため、ページがインデックスに登録されないように、サーバーが 404 HTTP ステータス コードを返すようにしてください。


要は、
・404ページは検索エンジンの観点からは無用
・404ページはインデックスに登録されない

ということですね。
キチンとカスタマイズして有用な404ページを作ればインデックスに登録されるものだと思い込んでいました。
最初からこれを見ていればあれこれ試行錯誤する必要はなかったという話ですが、後の祭りです。

考えてみると、サイトマップに登録したページが404を返すと検索エンジン的には単に「ページが見つからない」→ 当然インデックス登録されないという、ごく当たり前の話をソフトに?言い換えているだけですね。
念のため、サーバーが HTTPステータスコードを正しく返せているか確認してみました。

①404.html に直接アクセス
  → 「200 OK」


[ソフト404]


②error_404.html に直接アクセス
  → 「200 OK」


[ソフト404]


③存在しないページ(notfound.html)にアクセスし、error_404.htmlに転送
  → 「404 Not Found」


[ソフト404]


③の場合、あくまで error_404.html ではなく notfound.html に対して404を返しているというのがミソで、error_404.html には直接アクセスしないことが大前提となっています。

ということはすなわち、今回エラーページとして新たに作った「error_404.html」はサイトマップに登録しては絶対にダメということです。
(今度は error_404.html でソフト404エラーが出るだけです)

いずれにしても .htaccessの404転送先と、普通にインデックス登録してアクセスして欲しいページを一緒にしてはダメということですね。

多分、.htaccess の404転送先をindexページとか人気のページとかに設定しているサイトとか普通にありそうだけど、みなさん一体どうしているんでしょうか?
実際に試してみようかなと一瞬思ったものの、indexページがエラーでインデックスされなくなる可能性があり、実験して失敗した際のダメージが大きすぎるので試してません。

結局、当サイトは下記のページ構成にしました。


【まとめ】当サイトのページ構成(404関連)

・存在しないページへのアクセス
👉 .htaccessにより「error_404.html(エラーページ)」へ
  (アクセス元のページに対して 404 が返される)
  ※この場合、必ず.htaccess経由になるよう error_404.html への内部リンクは一切張らない
  ※error_404.html(エラーページ)はサイトマップ登録不可

・「404.html(HTTPコード一覧表のページ)」へのアクセス
👉 「404.html」へ
  (404.htmlに対して当然 200 が返される)
  ※404.html はサイトマップ登録可


同様の内容で悩んでおられる方が(万が一)いらっしゃれば、参考にしてみて下さい。

では最後にもう一度「ソフト99」の一応商品リンクを張っておきます。何じゃそれ。