ソフト404ページはウェブマスターとして微妙に恥ずかしい
今日は、「ソフト404ページ」の話題を。検索エンジンを困らせるぐらいで実害はほとんどないのですが、ウェブマスターとしては少し恥ずかしい、そんなサイトの不具合の話題です。
あなたのサイトでは、「ソフト404」の状態になっていませんか? サイトがソフト404を出す状態になっていると、検索エンジンに嫌われて、正しくページをクロールしてもらえなくなってしまうかもしれませんよ。
ソフト404とは、システムの不備で出る「おかしな状態」
ソフト404とは、少しわかりづらいのですが、Webページの表示に関するおかしな状態を表す用語です。どんな状態を指すのかというと、
- ブラウザで見ると「指定されたURLのページが見つかりません」といった、ページがないことを示す404(not found)が表示されている。
- でも、検索エンジンのロボットからみると、「見つかりません」と書かれたページがそのURLで正しく表示されたことになっている(404の状態になっていない)。
というもの。つまり、指定されたURLではページが作られておらず、ブラウザの画面上にもその旨正しく表示されるのですが、検索エンジンのロボットからはページが存在すると判断されるおかしな状態ですね。
原因はブラウザには表示されない「HTTPレスポンスコード」
もう少し詳しく説明しましょう。Webサーバーは、ブラウザやロボットからページの情報を求められると、2種類のデータを返します。
- 1つはHTML、つまりブラウザに表示される部分。
- もう1つは、「HTTPヘッダー」と呼ばれる、ブラウザには表示されない部分。
HTTPヘッダーは、ブラウザやロボットがサーバーから情報を得るためのやりとりに関する情報が含まれるのですが、そこに「HTTPレスポンスコード」というものがあります。これは、要求されたページのURLに対して、サーバーが「あったよ」「なかったよ」「こっちを見てね」と伝える部分。
通常、ページがちゃんと表示されたときはHTTPレスポンスコードで「200(OK)」を返し、要求されたページが存在しなければHTTPレスポンスコードで「404(見つかりません)」を返します。
「ソフト404」とは、本来はHTTPレスポンスコードで404を返さなければいけないのに、サーバーが200を返している状態を指します。そうしたHTTPの仕組みを厳密に処理できていないECシステムやコンテンツ管理システムやCGIのせいで発生する現象です。
たとえるならば、自動販売機にお金を入れたら、ディスプレイに「品切れです」って表示されるけど、商品選択ボタンは光っていて押せる状態になっていて、でも押しても何も出ないみたいな、そんな「画面の状態表示と、システム的な状態と、実際の状態がちぐはぐ」な状態です。
ソフト404は実はあまり大きな問題にはならない
とはいえ、ソフト404の状態になっていても、HTMLでは「見つかりませんでした」などの説明が表示されるので、ふつうにページを見る人間のユーザーには何の影響もありません。
ソフト404で困るのは、検索エンジン。検索エンジンはネット上の大量のURLの情報をクロールして集めていますが、404の(存在しない)ページの情報は検索対象として取り扱いません。そうしないと、処理が大変ですし検索結果にもゴミが増えますからね。その際に、各URLを検索対象として扱うかどうかを判断するのが、HTTPレスポンスコードなのです。つまり、レスポンスコードが200ならば検索対象として取り扱って、レスポンスコードが404ならば処理対象として扱わないといった感じです。
そこでソフト404です。本来は処理対象に含めなくていいはずの「見つかりません」ページがレスポンスコード200を返していると、検索エンジンは「見つかりません」という内容のページをクロールしてインデックスします。すると結果として、検索結果ページに「そのページは存在しません」「その商品は存在しません」といったページが出たり、場合によっては他の(ちゃんとクロールされるべき)ページがクロールされにくくなったり、新しいページがインデックスされるのが遅くなったりしてしまうのです。
まぁ、困ったことだと言えば困ったことですが、大問題かというとそうでもないですよね。どちらかというと、「ブラウザでページはちゃんと表示されるけど、ちょっとHTMLの文法が間違っていてIEでは変な表示になる」といった状態と似ているかもしれませんね。「ダメとまでは言わないけど、ちょっと恥ずかしい」ぐらい。
ソフト404の調べ方と対策
さて、では自分のサイトがソフト404になっていないか、どうすれば調べられるのでしょうか?
そのためには、通常は表示されないHTTPヘッダーのレスポンスコードを表示する必要があります。Firefoxを使っている人ならばアドオンのLive HTTP Headersを使えばいいのですが、それも面倒なので、HTTP Web-Snifferのサイトを使うことにしましょう。
- HTTP Web-Sniffer → http://web-sniffer.net/
使い方は簡単。「HTTP(S)-URL」の欄に、自分のサイトの存在しないはずのURLを入力します。たとえば、Web担ならこんな感じですね。
存在しない→http://web-tan.forum.impressrd.jp/sonzai-sinai-pe-ji
で、[Submit]ボタンをクリックします。ページ下に「HTTP Response Header」が表示されるので、その1行目の「Status」を見ます。
そこに「404」と表示されていれば問題ありません(ソフト404になっていません)。そこが「200」や「301」「302」だとソフト404を疑いましょう。
ソフト404は、サイトの一部で発生している場合もあります。たとえば楽天市場では、通常のページで存在しないURLを指定すると正しく404が返りますが、
→ http://web-sniffer.net/?url=http://www.rakuten.co.jp/sonzai-sinai-pe-ji
各店舗の商品ページでは、存在しない商品ページのURLを指定すると200が返っているので、ソフト404の状態になっています。
→ http://web-sniffer.net/?url=http://item.rakuten.co.jp/namasabazushi/sonzai-sinai-pe-ji/
京都府のページでは、存在しないはずのURLでは302が返ってきて、
→ http://web-sniffer.net/?url=http://www.pref.kyoto.jp/sonzai-sinai-pe-ji/
リダイレクト先のページでは200が返っています。
→ http://web-sniffer.net/?url=http://www.pref.kyoto.jp/error404.html
これもソフト404ですね。
Googleウェブマスターツールにサイトを登録していると、ソフト404になっているページがあれば教えてくれます。確認するには、ウェブマスターツールにログインして対象サイトを選んだら左のメニューから[診断]>[クロール エラー]を選びます。右側の「URLを表示」のところに「HTTP」や「見つかりませんでした」「タイムアウトしました」などに並んで「ソフト404」が表示されていれば、それです。
ソフト404になっていた場合には、解決するにはシステムを改修してもらうしかありません(楽天の店舗システムは……仕方ないですね)。
もしかしたらエンジニアさんは「404を返すようにすると、素っ気ないエラーページしか出せなくなりますよ」などと言うかもしれませんが、それは大間違いです。たとえばトヨタ自動車のサイトでは、存在しないページに対して、「そのページがないことを、トヨタのロゴやサイトデザインで示したうえで、しばらく待つとトップページに飛ばす」といった動きを、ちゃんと404を返したうえで実現しています。
ちなみに、HTTPレスポンスコードの扱いを失敗すると、逆の「ソフト200」の状態も出てきます。ページのコンテンツがあってブラウザではちゃんと中身が表示されるのに、システムが間違ってレスポンスコード404を返してしまっているので、検索エンジンがそのページをインデックスしてくれないという状態です。
ウェブとか検索エンジン対策って、奥が深いですね。
・ウェブマスターツールヘルプ「ソフト404エラー」
http://www.google.com/support/webmasters/bin/answer.py?hl=ja&answer=181708
ソーシャルもやってます!