Eコマースのサイト内検索SEO

店舗の検索ボックスはコンバージョンの源である一方、クロール上の負債にもなります。内部検索結果をGoogleのインデックスから外し、検索ログをSEOに活かす方法を解説します。

初回公開:2026年7月3日 · 最終更新:2026年8月6日 · Advanced
言語
このページには証拠シグナルが1件あります

Eコマースのサイト内検索には、検索機能と検索結果ページという2つの側面があります。検索ボックスは購入意向の高い顧客を捉え、クエリログはキーワード調査の貴重な一次データになります。一方、生成される /search?q=... URL は薄く、重複に近く、空になることもあるため、クロールとインデックスの負債です。検索結果URLはrobots.txtで制御し、同じURLでnoindexと併用しないでください。空の結果は実際のHTTPエラー(見つからない)を返し、繰り返し需要のあるクエリは、検索URLではなく、説明的なタイトルと本文を持つカテゴリまたはランディングページへ昇格させます。

TL;DR — Eコマースのサイト内検索は、1つの名前で2つの話をしているため、混同しないことが重要です。機能は購入意向の高いコンバージョン面であり、検索ログは自社が持つ最高のキーワード調査データの1つです。結果ページ/search?q=...)は、薄く、近い重複や空ページを含むほぼ無限のURL空間です。Googleはこれを、低価値URLの代表例であるファセットナビゲーションやセッション識別子と同じように扱い、“drain crawl activity from pages that do actually have value.” (翻訳)「実際に価値のあるページからクロール活動を奪う」ものと説明しています。正確な方針は、インデックスから除外するならrobots.txtがnoindexに勝るということです。Googleは*“don’t use noindex, as Google will still request, but then drop the page… wasting crawling time,”* (翻訳)「noindexは使わないでください。Googleはリクエストしてからページを捨てるため、クロール時間を浪費します」と明示しています。検索パスをrobots.txtでdisallowし、ボットに予算を使わせません。同じURLでrobots.txtのdisallowとnoindexを併用しないでください。ブロックされたページは読めず、noindexを見られないため、リンクされていればURLだけがインデックスに残ることもあります。空の結果にはソフト404ではなく実際の404を返します。“soft 404 pages will continue to be crawled, and waste your budget” (翻訳)「ソフト404ページはクロールされ続け、予算を浪費します」。特定のクエリに本物の反復需要がある場合も、生の検索URLをインデックスせず、適切なカテゴリ/ランディングページを作ります。

重ならない2つの仕事

サイト内検索で混乱が起きるのは、「Eコマースのサイト内検索SEO」という言葉が、ほとんど関係のない2つの仕事をまとめているからです。

  1. 検索体験を良くする。 関連性、速度、誤字許容、同義語、マーチャンダイジング、結果ゼロの処理、そして重要な検索ログからの需要シグナル抽出です。UXとCROの仕事ですが、SEOにも効果があります。
  2. 検索結果URLがオーガニック検索で害を与えないようにする。 クロール予算の浪費、インデックス肥大化、近い重複を防ぎます。

仕事1は積極的に最適化します。仕事2の基本姿勢は封じ込めで、意図的な例外を1つだけ設けます。このテーマの混乱の多くは、ほとんど価値のないURL空間に「検索ページを順位づけよう」という仕事1の熱意を適用することから生まれます。

検索結果ページがクロール上の負債になる理由

内部検索URLは、Googleが警告する低価値URL空間の典型例です。Googleの正規のクロールバジェット記事で、Gary Illyesはクロール予算を浪費するURLを*“in order of significance”* (翻訳)「重要度の順に」列挙しています。最上位は”Faceted navigation and session identifiers” (翻訳)「ファセットナビゲーションとセッション識別子」 で、続いてで、続いて*“On-site duplicate content”* (翻訳)「サイト内の重複コンテンツ」と*“Soft error pages.”* (翻訳)「ソフトエラーページ」です。内部検索結果ページはこの3つすべてに該当します。

  • 無限に動的生成される空間。 誤字、ボット、クエリ文字列のゴミを含むすべての検索語が新しいURLを作れます。ファセットナビゲーションを危険にするパラメーター爆発と同じ構造です。
  • 薄く、近い重複コンテンツ。 ?q=running-shoesの検索と/shoes/running/カテゴリはほぼ同じ商品を表示し得るため、検索ページが本来順位を得たいページと競合・重複します。
  • 空ページ/ソフトエラーページ。 「結果なし」は定義上低価値で、200 OKを返すとソフト404になります。Googleがクロール浪費として明示的に扱う状態です。

コストはIllyesの説明どおりです。“Wasting server resources on pages like these will drain crawl activity from pages that do actually have value, which may cause a significant delay in discovering great content on a site.” (翻訳)「このようなページにサーバー資源を浪費すると、実際に価値のあるページからクロール活動を奪い、サイトの優れたコンテンツの発見を大幅に遅らせる可能性があります。」大規模店舗では、制御されない検索URLが最大のクロール吸収源の1つになり得ます。

規模については過度に心配しない注意点もあります。Googleは、クロールバジェットは主に大規模サイトの問題だと明確にしています。“if your pages seem to be crawled the same day that they are published, you don’t need to read this guide.” (翻訳)「公開した当日にページがクロールされているようなら、このガイドを読む必要はありません。」500商品程度のShopify店舗が、少数の検索URLだけで制限されるわけではありません。ただし小規模サイトでも、検索ページをインデックスに入れると重複・薄いコンテンツやインデックス肥大化が起きるため、クロールバジェットとは別に防ぐ価値があります。封じ込めの修正はどの規模でも安価です。

robots.txtとnoindex — 正しく使い分ける

これはテーマ全体の正確さを支える中心であり、多くの店舗が逆に理解している点です。2つのツールは別の働きをします。

通常の目的、つまり検索ページをGoogleとクロール予定から外すには、robots.txtで検索パスをdisallowします。

User-agent: *
Disallow: /search
Disallow: /*?q=
Disallow: /*?s=

(パスはプラットフォームに合わせて調整します。/search?q=?s=、Magentoの/catalogsearch/などです。)

重大な誤り:同じURLをdisallowとnoindexにしない。 robots.txtでブロックされたURLはGooglebotが取得できず、付けたnoindexタグも読めません。 Evidence for this claim Google must crawl a page to see noindex, so a robots.txt block prevents Google from processing that page's noindex rule. Scope: Robots.txt controls crawling, while noindex controls indexing after retrieval. Confidence: high · Verified: Google: Block indexing with noindex ブロックが優先され、タグは見えません。さらに、robots.txtでブロックされたURLでも、リンクされればURLだけ(スニペットなし)でインデックスに残ることがあります。robots.txtはクロールを制御し、インデックス登録を直接解除するものではないからです。したがって:

  • 目的:クロールを浪費せず、順位も付けないrobots.txtでdisallow(検索ページの通常ケース)。
  • 目的:すでに登録されたURLを削除する → 一時的にクロールを許可し、削除されるまでnoindexを返します。その後でdisallowします。同時に行ってはいけません。

空の結果:ソフト404ではなく実際の404

検索結果がないとき、200 OKの「結果なし」ページを返すのは誤りです。これはソフト404で、Googleは*“soft 404 pages will continue to be crawled, and waste your budget.”* (翻訳)「ソフト404ページはクロールされ続け、予算を浪費します」と警告しています。ゼロ結果には次の方法が適しています。 Evidence for this claim Soft-404 pages can continue to consume crawl resources because they return a success response for missing content. Scope: Google may classify pages algorithmically based on content and response behavior. Confidence: high · Verified: Google: Large-site crawl budget

  • 本物の**404**(または410)ステータスを返し、Googleに*“a strong signal not to crawl that URL again.”* (翻訳)「そのURLを再びクロールしないための強いシグナル」を送ります。
  • すでにrobots.txtでブロックされた検索パスの背後に、役立つ「結果なし」体験を置きます。ボットが/searchをクロールしなければ、空ページのステータスはクロール予算上重要ではありません。顧客回復(カテゴリ提案、人気商品、スペル候補)に集中できます。

UXとクロール対策は対立しません。ボットには検索パスをブロックし、人間向けのゼロ結果ページはコンバージョン回復だけを目的に設計します。

インデックス可能なページが必要になる唯一の場面

封じ込めが基本ですが、検索ログにはロングテールの機会があります。誤りは、生の/search?q=URLをインデックスして捕まえようとすることです。そうはしません。代わりに次を行います。

  1. クエリログを調べる。 内部検索クエリは顧客の言葉で書かれた一次需要リストです。仕入れていない商品の需要や、カテゴリ名に欠けている表現も見つかります。
  2. 外部需要を検証する。 内部検索で頻出する語をキーワードツールで実際の検索エンジン需要と照合します。自社でも外部でも検索量がある語が候補です。
  3. 検索URLではなく本物のページを作る。 きれいな静的URL(/collections/gluten-free-protein-bars/)に、説明的なタイトル、H1、BreadcrumbList、本当に役立つ本文、内部リンクを持つカテゴリ/コレクションページまたはキュレーションしたランディングページを作ります。インデックスと順位に値するのはこのページです。

これはファセットナビゲーションの「ノイズをブロックし、シグナルをインデックスする」という考え方と同じです。ただしサイト内検索では、シグナルが検索URL自体のインデックスを正当化することはほとんどありません。需要を専用ページへ昇格させます。

位置づけ

Eコマースのサイト内検索は、いくつかの隣接テーマと強く重なります。最も近いのはファセットナビゲーションです。フィルターと検索は、パラメーター爆発という同じ問題の2つの形であり、Googleのファセットナビゲーション指針(robots.txtでブロック、空の組み合わせは404、canonicalは長期的には弱い手段)は検索URLにもほぼそのまま適用できます。検索ログで見つけたロングテール需要を受けるのはカテゴリページSEOです。そして、容量と需要、低価値URLが実ページから予算を奪うというクロール効率の見方は、クロールバジェットのテーマです。サイト内検索は、店舗の検索ボックスを隠れたクロール負債からキーワード調査の資産へ変える部分です。

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.