このブログだけのフィードを購読できます今日は、「ソフト404ページ」の話題を。検索エンジンを困らせるぐらいで実害はほとんどないのですが、ウェブマスターとしては少し恥ずかしい、そんなサイトの不具合の話題です。サイトがソフト404を出す状態になっていると、検索エンジンに嫌われて、正しくページをクロールしてもらえなくなってしまうかもしれませんよ。ソフト404とは、システムの不備で出る「おかしな状態」ソフト404とは、少しわかりづらいのですが、Webページの表示に関するおかしな状態を表す用語です。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では変な表示になる」といった状態と似ているかもしれませんね。「ダメとまでは言わないけど、ちょっと恥ずかしい」ぐらい。そのためには、通常は表示されないHTTPヘッダーのレスポンスコードを表示する必要があります。Web-Snifferのサイトを使うことにしましょう。http://web-sniffer.net/使い方は簡単。「HTTP(S)-URL」の欄に、自分のサイトの存在しないはずのURLを入力します。Web担ならこんな感じですね。存在しない→http://web-tan.forum.impressrd.jp/sonzai-sinai-pe-jiで、[Submit]ボタンをクリックします。Header」が表示されるので、その1行目の「Status」を見ます。そこに「404」と表示されていれば問題ありません(ソフト404になっていません)。そこが「200」や「301」「302」だとソフト404を疑いましょう。ページが存在しないはずのURLを調べると「404」が返っているので、「ソフト404」状態にはなっていないページが存在しないはずのURLを調べると「200」が返っている(コードが正しく404になっていない)ので、「ソフト404」状態ソフト404は、サイトの一部で発生している場合もあります。http://web-sniffer.net/?url=http://www.rakuten.co.jp/sonzai-sinai-pe-ji各店舗の商品ページでは、存在しない商品ページのURLを指定すると200が返っているので、ソフト404の状態になっています。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を返してしまっているので、検索エンジンがそのページをインデックスしてくれないという状態です。ウェブとか検索エンジン対策って、奥が深いですね。「Web担当者Forum」編集長。