ピックアップ,最新動向,突撃!マット・カッツ

グーグルは404と410ステータスコード違うように扱うのでしょうか ?

2014年04月17日 ネズミ1号:略称「T」
, ,
このエントリーをはてなブックマークに追加

film.png今日はおなじみブライアンさん5歳からの質問です。「グーグルは、404エラーや410メッセージをサーバーから受け取った時それぞれ違った扱いをしているのでしょうか?」
matt:
はい。まずは、404 対 S410という質問ですが、404とか410とか背番号みたいな数ですが、これはHTTPステータスコードっていうんでしたね。ブラウザとかグーグルボットがページをリクエストしたときにサーバーがステータスコードを返すんですが、例えば200だったらリクエストを「正常に受け付けましたよ」という返答ですし、404は「ページが(一時的に?)見当たらないです!」という返答ですし、410は「ファイルはどっかいっちゃたみたいで、多分二度とリクエストもらっても求めるファイルはもうないですよ!」というメッセージだったりするんです。そういう意味で、410は該当するページはもはや永遠に存在しないよ!というメッセージだということですね。



matt:はい、ということで、完結に結論をいうと、404と410の扱いは若干違った扱いをしています。ただし、そこまで込み入った内容ではないので心配しないでください。

つまり、「一時的にページが見えない状況になっていて、いずれ復活される気がある場合は、404」を、「もうそのURIに格納されたページ自体二度と復活するつもりがない場合は、410」を表示してくださいね。

matt:では、ここからは、グーグルのクローラーがどのように404と410を扱うかちょっと細かい話をしましょうね。
まず前提としてのなのですが、サイト管理者はあくまでも人間です。ですから、ちょっとしたミスを起こすことはよくあることだとグーグルは考えています。例えば、一時的にサーバーがダウンしてたり、(setStatusなどを)間違って設定してたり、グーグルボットや通常のhttpリクエスト間違えてブロックしてたり、さまざまなことが想定されますね。まぁそういう大前提を想定しているので、グーグルクローラーを設計するチームはより柔軟な設計をしていたりするんですが..まあそういう前提であるということ理解いただいた上でお話を聞いてくださいね。

404についてですが、そうですね。そういう意味では401(Unauthorized)とか403(forbidden)なんかもそうですが、404メッセージをはじめに受け取った際には、クローリングシステム上では、少なくとも24時間は様子をみるような処理をしています。ひょっとしたら、page not foundと意図しているのではないかも?というスタンスでですね。

これに対し、410が返ってきたときですが、OK、多分サイト管理者はおそらくページが移動してもうないことを分かっているはずでだ!じゃぁ、410が返ってきたページは24時間は様子をみるといよりは正式にエラーにしよう。と処理することになります。

matt:ただ誤解してほしくないのは、仮に410を受けて正式にエラーと認識するといっても常にこのように事務処理的に処理しているわけではないのです!時には本当にそうかなぁ?とそうしたページもときたまチェックすることがあるのです。

グーグルでは、常に良いコンテンツを収集できるように、サーバーの機械的なメッセージだけを信じて、事務的に処理するような安易な設計にはなっていないんですね。

そういう意味では、404も410も長い目で見ると結果としては、そんなに違いは実はないということも言えるのですね。どうでしょう?質問の答えとして参考になりましたでしょうか?

ねずみ小僧:分かり易い説明ありがとうございました。消したいページなど素早く反映したい場合は、410を返す設定、サーバーがダウンしたり、何らかの理由でページを返せないよう場合は、404となるように、apache側の設定をするといいようですね。ただ、マットさんもいっているように、サイト管理者は誰しもがWebサーバーの細かな設定のエキスパートであるとは限らないですし、サイトを運用していく上で、時にはページがみれなくなったり、ちょっとしたミスで意図しないhttpステータスコードを返すことになってしますことも十分ありうる訳です。

グーグルのクロールシステムはそうした観点も加味し、長い目で見ると結果として良いコンテンツを取りこぼしのないようにきちんと設計されているし、運用しているということなのですね。

, ,


関連記事