サイト内検索結果ページがSEOで問題になる理由と対処法

[レベル: 上級]

サイト内検索の検索結果ページを Google がクロールしてしまうと、思わぬ技術的な問題を引き起こすことがあります。

Google Search Relations チームの John Mueller(ジョン・ミューラー)氏と Martin Splitt(マーティン・スプリット)氏が Search Off the Record ポッドキャストのエピソード 113 で、この問題と対処法を取り上げました。

検索結果ページは無限クロール空間になりやすい

サイト内検索の URL は、検索語や並び順、カテゴリー、フィルターなどの組み合わせによって、理論上ほぼ無限に生成できてしまいます。
また、特定の検索語のページに誰かがリンクを張れば、Google はそれを通常のページと同様にクロールしようとします。
さらに検索結果ページ同士が関連キーワードで相互にリンクし合う設計になっていると、Googlebot はそこから次々と新しい URL をたどり続ける状況が発生することもありえます。

この状態は技術的に「無限空間 (infinite space)」と呼ばれ、サイトにとって好ましくありません。
検索結果ページは通常キャッシュされておらず、アクセスのたびにデータベース検索や順位付けの処理が発生するため、大量にクロールされるとサーバー負荷が高まるからです。
加えて、サイト全体の表示速度にも影響しかねません。

Google はこうしたパターンを検出してクロール優先度を下げようとはしますが、確実に防げるとは限りません。

対処法は robots.txt と noindex の 2 つ

推奨される対処法は次の 2 つです。

  • robots.txt でクロール拒否:
    検索結果ページ全体を 1 つのシンプルなルールでまとめてブロックする。個々の検索クエリごとに細かくルールを分けるのではなく、たとえば /search/? のように URL パターン全体をカバーする広いルールにすることで、管理しやすくなる。WordPress や Drupal などの CMS を使っている場合でも比較的容易に設定できる。
  • noindex タグの利用:
    HTTP ヘッダーや meta タグで noindex を指定する。この場合 Google はページをクロールするが、インデックスはしない。robots.txt よりもクリーン(※)な方法である。ただし、クロール自体は発生し続ける点が異なる。
    ※ 検索結果ページを robots.txt でブロックしても状況によっては検索結果に表示される場合がある。noindex は検索結果から確実に非表示にできるというニュアンスで「クリーン (clean) 」という表現をミューラーは使っている

どちらもメリットとデメリットがあります。
シンプルさの面では robots.txt が扱いやすいと言えます。

なお、Search Console の削除ツールは検索結果からページを一時的に隠すだけです。
クロール自体は止まらないため、根本的な解決にはなりません。

また、検索結果ページに対して意図的に 500 エラーを返すべきではありません。
サーバー障害だと Google が判断し、検索結果ページに限らずサイト全体のクロール量を減らしてしまう可能性があるためです。
404 を返す方法も選択肢としては挙げられていますが、キャッシュ関連の問題が生じるかもしれないため推奨されません。

カテゴリーページとの違いに注意

Blogger など一部の CMS では、カテゴリーやタグのクリックが内部的に検索結果ページとして処理される場合があります。
しかしカテゴリーページは、サイトの構造や各ページ同士の関係性を検索エンジンに伝える役割を持つため、通常の検索結果ページとは異なり、クロール・インデックス可能にしておく価値があります。

検索結果ページ経由で流入を狙いたい重要なテーマがある場合も、検索結果ページをそのまま公開するのではなく、専用のカテゴリーページを作成する方が望ましいといえます。
専用ページであれば、そのテーマがなぜ重要か、どのコンテンツが特におすすめかといった文脈を加えられる分、検索結果の一覧よりも価値が高くなるからです。

品質やスパムの問題ではない

重要なのは、検索結果ページのインデックスを品質違反やスパムとして Google が扱っているわけではないという点です。
あくまで「非効率」という技術的な観点からの推奨であり、ペナルティの対象にはなりません。

ただし、例外的に注意すべきケースがあります。

サイト内検索が任意の語句を受け付けてインデックス可能な状態になっていると、第三者がそれを悪用する可能性があります。
攻撃者が、医薬品、成人向けコンテンツ、カジノなどの語句と連絡先情報を検索クエリとして送り込み、そのページに大量の外部リンクを張ることで、本来無関係なはずのサイトがそうした検索語で検索結果に表示されてしまうケースが実際に確認されています。

こうした状態を Google が検知すると Search Console 上で「ハッキングされたコンテンツ」として警告が表示されることもあります。
しかし、検知までに時間がかかったり、一部にしか対応できなかったりすることもあるため、Google の自動検出だけに頼るのは得策ではありません。

まとめ

通常のサイト内検索結果ページは、SEO 上の価値が低い一方で、クロール負荷や第三者によるスパム悪用のリスクを抱えています。
Web担当者Forum 連載コラムの先週の更新でも、サイト内検索スパムの事例を取り上げました。

サイト内検索結果ページは、robots.txt または noindex により、原則としてクロール・インデックスをコントロールしておくのが安全です。
一方で、検索流入を狙いたいテーマについては、検索結果ページに頼らず、内容を整えた専用のカテゴリーページを用意することが推奨されます。