Eコマースのサイト内検索SEO
店舗の検索ボックスはコンバージョンの源である一方、クロール上の負債にもなります。内部検索結果をGoogleのインデックスから外し、検索ログをSEOに活かす方法を解説します。
言語
このページには証拠シグナルが1件あります
- 関連するライブツールrobots.txt Tester
Eコマースのサイト内検索には、検索機能と検索結果ページという2つの側面があります。検索ボックスは購入意向の高い顧客を捉え、クエリログはキーワード調査の貴重な一次データになります。一方、生成される /search?q=... URL は薄く、重複に近く、空になることもあるため、クロールとインデックスの負債です。検索結果URLはrobots.txtで制御し、同じURLでnoindexと併用しないでください。空の結果は実際のHTTPエラー(見つからない)を返し、繰り返し需要のあるクエリは、検索URLではなく、説明的なタイトルと本文を持つカテゴリまたはランディングページへ昇格させます。
TL;DR — 店舗の検索ボックスには、実は2つのSEO上の側面があります。検索機能そのものは購入に近い顧客を捉え、入力語は顧客が本当に求めているものを示す無料のリストになります。一方、検索ボックスが作る
/search?q=running-shoesのような結果ページは薄く、互いに重複し、無限に増えます。検索ボックスと入力データを活かしながら、検索結果URLをGoogleから遠ざけることが主な仕事です。
ここでいう「サイト内検索」とは
混同されやすい「検索」には2種類あります。分けて考えましょう。
- Google(またはBing)の検索 — ウェブ上の検索エンジンで、ユーザーを店舗へ送ります。
- サイト内検索/内部検索 — 店舗内にある検索ボックスで、買い物客が自社の商品を探します。
この記事は後者を扱います。買い物客が店舗の検索ボックスに「waterproof boots」と入力すると、多くのサイトは結果ページ用にyourstore.com/search?q=waterproof-bootsのような新しいURLを作ります。SEOで問題になるのは、この部分です。
検索ボックスが有用な理由
検索ボックスを使う買い物客は、ただ閲覧する人より購入意向が高い傾向があります。欲しいものを具体的に伝えているからです。利点は2つあります。
- コンバージョンにつながる。 誤字や同義語(「trainers」=「sneakers」)に対応する速く正確な検索なら、商品を見つけて購入できます。
- 無料のキーワードリストになる。 入力される語句は、顧客が自分の言葉で探しているものを伝える一次データです。仕入れる商品、書く記事、作るカテゴリを決めるうえで貴重です。
検索結果ページが問題になる理由
問題は、/search?q=...ページが静かに3つの頭痛の種を生むことです。
- バリエーションが無限にある。 誤字や意味のない入力を含め、何百万もの検索語があり、それぞれが独自URLになります。
- 薄く、反復的である。 「red shoes」の検索と赤い靴のカテゴリページがほぼ同じ商品を表示すると、Googleには近い重複に見えます。
- 空になるものがある。 扱っていない商品を検索すると「結果なし」ページになります。Googleに入れたくない低価値ページです。
Googleがサイトをクロールできる時間は限られています。検索結果URLの沼より、実際の商品ページやカテゴリページに時間を使うほうが有益です。標準的な助言は、内部検索結果ページをGoogleから除外することです。
Evidence for this claim Low-value, dynamically generated URL spaces can waste crawl resources better spent on useful pages. Scope: Crawl-budget impact is most material on large or rapidly changing sites. Confidence: high · Verified: Google: Large-site crawl budgetシンプルな修正
robots.txtで検索結果ページをクロールしないよう検索エンジンに伝えます。通常は1行で、開発者やプラットフォームが設定できます。- 結果がない検索は、正常なページに見せかけるのではなく、適切な「見つからない」レスポンスを返すようにします。 Evidence for this claim A page for a resource that does not exist should return an appropriate 404 or 410 status rather than a misleading 200. Scope: A useful search interface may remain available to users while nonexistent result resources use correct status handling. Confidence: high · Verified: Google: Soft 404 errors
- noindexを付けたうえで同時にブロックする方法は避けます。 ブロックするとGoogleはタグを読めず、ブロックが優先されてタグは機能しません。この用途ではブロックを選びます。
知っておきたい1つの例外
サイト内検索とGoogleの両方で、多くの人が同じ語句(たとえば「gluten-free protein bars」)を検索することがあります。実際に繰り返し需要があるなら、生の/search?q=ページを順位づけしようとしないでください。代わりに、きれいなURL、適切なタイトル、役立つ本文を持つ本物のカテゴリまたはランディングページを作ります。順位を狙う価値があるのはそのページであり、生の検索URLではありません。
robots.txtとnoindexの正確な使い分け、空の結果に本物の404が必要な理由、検索ログをインデックス可能なページへ変える方法は、Advancedタブで扱います。
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つの仕事をまとめているからです。
- 検索体験を良くする。 関連性、速度、誤字許容、同義語、マーチャンダイジング、結果ゼロの処理、そして重要な検索ログからの需要シグナル抽出です。UXとCROの仕事ですが、SEOにも効果があります。
- 検索結果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つのツールは別の働きをします。
robots.txtのdisallowはクロールを止めます。ボットはURLを取得しないため、クロール予算を使いません。内部検索結果では、そもそも取得する価値がないため、これが適切です。noindexはインデックス登録を止めますが、ページがクロールされた後にしか働きません。Googlebotはnoindexタグを見るためにページを取得するので、クロール予算は節約できません。Googleのクロールバジェットガイドは、“Don’t use noindex, as Google will still request, but then drop the page when it sees a noindex meta tag or header in the HTTP response, wasting crawling time.” (翻訳)「noindexは使わないでください。GoogleはリクエストしてからHTTPレスポンスのnoindexメタタグまたはヘッダーを見てページを捨てるため、クロール時間を浪費します。」 と明言しています。
通常の目的、つまり検索ページを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をインデックスして捕まえようとすることです。そうはしません。代わりに次を行います。
- クエリログを調べる。 内部検索クエリは顧客の言葉で書かれた一次需要リストです。仕入れていない商品の需要や、カテゴリ名に欠けている表現も見つかります。
- 外部需要を検証する。 内部検索で頻出する語をキーワードツールで実際の検索エンジン需要と照合します。自社でも外部でも検索量がある語が候補です。
- 検索URLではなく本物のページを作る。 きれいな静的URL(
/collections/gluten-free-protein-bars/)に、説明的なタイトル、H1、BreadcrumbList、本当に役立つ本文、内部リンクを持つカテゴリ/コレクションページまたはキュレーションしたランディングページを作ります。インデックスと順位に値するのはこのページです。
これはファセットナビゲーションの「ノイズをブロックし、シグナルをインデックスする」という考え方と同じです。ただしサイト内検索では、シグナルが検索URL自体のインデックスを正当化することはほとんどありません。需要を専用ページへ昇格させます。
位置づけ
Eコマースのサイト内検索は、いくつかの隣接テーマと強く重なります。最も近いのはファセットナビゲーションです。フィルターと検索は、パラメーター爆発という同じ問題の2つの形であり、Googleのファセットナビゲーション指針(robots.txtでブロック、空の組み合わせは404、canonicalは長期的には弱い手段)は検索URLにもほぼそのまま適用できます。検索ログで見つけたロングテール需要を受けるのはカテゴリページSEOです。そして、容量と需要、低価値URLが実ページから予算を奪うというクロール効率の見方は、クロールバジェットのテーマです。サイト内検索は、店舗の検索ボックスを隠れたクロール負債からキーワード調査の資産へ変える部分です。
AI要約
Advanced版を凝縮すると、次のとおりです。
- Eコマースのサイト内検索は1つで2つのテーマ。 サイト内検索ボックスは購入意向の高いコンバージョン機能で、一次キーワード調査の宝庫です。検索結果ページ(
/search?q=...)はSEO上の負債です。混同しません。 - 結果ページは典型的なクロール浪費。 Googleは低価値URLのカテゴリで*“Faceted navigation and session identifiers”* (翻訳)「ファセットナビゲーションとセッション識別子」を最初に挙げます。内部検索URLも、無限で薄く、近い重複や空ページを含む同じパターンで、“drain crawl activity from pages that do actually have value.” (翻訳)「価値のあるページからクロール活動を奪います」。
- この用途ではrobots.txtがnoindexに勝つ。
noindexはページを捨てる前にクロールを強制します。“don’t use noindex, as Google will still request… wasting crawling time” (翻訳)「noindexは使わないでください。Googleはリクエストするためクロール時間を浪費します」。検索パスをrobots.txtでdisallowします。 - 同じURLをdisallowとnoindexにしない。 ブロックページは読めず、noindexは見られません。リンクされたブロックURLは裸のURLとして残ることもあります。
- 空の結果はソフト404ではなく実際の404。 “soft 404 pages will continue to be crawled, and waste your budget” (翻訳)「ソフト404ページはクロールされ続け、予算を浪費します」。または、すでにブロックした
/searchの背後にゼロ結果UXを置きます。 - ロングテールの例外。 生の検索URLはインデックスしません。ログで需要を見つけ、外部検索量で検証し、勝ち筋をきれいな静的URLのカテゴリ/ランディングページにします。
- 隣接テーマ。 ファセットナビゲーション(同じパラメーター爆発)、カテゴリページSEO(需要の着地点)、クロールバジェット(効率の見方)です。
公式ドキュメント
一次資料です。「内部サイト検索」というタイトルのGoogle文書はなく、検索結果ページが同じ低価値URL問題の一例であるため、クロールバジェット、ファセットナビゲーション、重複URLの文書にガイダンスが分散しています。
Google — クロールとクロールバジェット
- クロールバジェットを最適化する — robots.txtとnoindexの使い分け、ソフト404の浪費、
404/410、クロールバジェットを気にすべきサイトを説明します。 - Googlebotにとってのクロールバジェット — 低価値URLカテゴリ(最初はファセットナビゲーションとセッション識別子)と、価値あるページからクロールを奪う理由を示す基準文書です。
- ファセットナビゲーションURLのクロールを管理する — 内部検索に最も近い類例です。robots.txtでブロックし、URLフラグメントを避け、canonicalは弱い長期手段とし、空の組み合わせは
404にします。クローラー基盤版も参照してください。
Google — インデックスと重複
- robots.txt入門 —
Disallowがクロールを止め、重要なことに、インデックスから削除するものではないと説明します。 - noindexで検索インデックスをブロックする — インデックスからページを削除する手段で、タグを見るにはクロール可能である必要があります。
- 重複URLを統合する — 検索結果の近い重複に関するcanonical化の背景です。
Google — Eコマース専門資料
- EコマースサイトのURL構造を設計する — 重複URLを減らし、セッション・トラッキングパラメーターを内部リンクから外す考え方です。
- GoogleがEコマースサイトの構造を理解できるようにする — 動的URLではなく、検索ログ需要の着地点として目的別カテゴリページを作る根拠です。
出典からの引用
Googleの記録に残る発言です。各リンクは出典ページの引用箇所へ移動するディープリンクです。「内部サイト検索」と名指しするGoogleの引用はないため、以下は検索結果ページを含むURLカテゴリに関するガイダンスです。クロール浪費、robots.txtとnoindex、ソフト404を扱い、これが検索結果ページを規定します。
Google — クロールバジェットを浪費するもの
- “Faceted navigation and session identifiers / On-site duplicate content / Soft error pages / Hacked pages / Infinite spaces and proxies / Low quality and spam content” (翻訳)「ファセットナビゲーションとセッション識別子/サイト内の重複コンテンツ/ソフトエラーページ/ハッキングされたページ/無限空間とプロキシ/低品質・スパムコンテンツ」 — Gary Illyesが低価値URLカテゴリを「重要度の順に」示したものです。内部検索結果は最初の3つに該当します。 引用箇所へ
- “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.” (翻訳)「このようなページにサーバー資源を浪費すると、価値のあるページからクロール活動を奪い、優れたコンテンツの発見を大幅に遅らせる可能性があります。」 — Gary Illyes、Google。 引用箇所へ
- “An increased crawl rate will not necessarily lead to better positions in Search results… while crawling is necessary for being in the results, it’s not a ranking signal.” (翻訳)「クロール速度を上げても検索結果での順位が良くなるとは限りません。結果に入るにはクロールが必要ですが、クロールは順位シグナルではありません。」 — Gary Illyes、Google(検索ページを多くクロールさせても役に立たないという意味です)。 引用箇所へ
Google — robots.txtとnoindexとソフト404
- “Don’t use noindex, as Google will still request, but then drop the page when it sees a noindex meta tag or header in the HTTP response, wasting crawling time.” (翻訳)「noindexは使わないでください。GoogleはリクエストしてからHTTPレスポンスのnoindexメタタグまたはヘッダーを見てページを捨てるため、クロール時間を浪費します。」 — Google Search Central。 引用箇所へ
- “soft 404 pages will continue to be crawled, and waste your budget.” (翻訳)「ソフト404ページはクロールされ続け、予算を浪費します。」 — Google Search Central(
200 OKの空/ゼロ結果ページについて)。 引用箇所へ - “Return a 404 or 410 status code for permanently removed pages… a 404 status code is a strong signal not to crawl that URL again.” (翻訳)「恒久的に削除したページには404または410を返してください。404ステータスは、そのURLを再びクロールしないための強いシグナルです。」 — Google Search Central。 引用箇所へ
Google — クロールバジェットが主に問題になる規模
- “If your site doesn’t have a large number of pages that change rapidly, or if your pages seem to be crawled the same day that they are published, you don’t need to read this guide.” (翻訳)「サイトに急速に変化する大量のページがない、または公開した当日にクロールされているようなら、このガイドを読む必要はありません。」 引用箇所へ
検索結果URLにはどの制御を使うか?
上から順に確認し、最初に当てはまるところで止めます。
1. 標準ケースか — クロールも順位づけもしたくない検索結果か?
→ 検索パス(/search、?q=、?s=、/catalogsearch/)を**robots.txtでdisallow**します。ボットは取得しないためクロール予算を使いません。noindexも追加しません。
2. 検索URLがすでに登録され、インデックスから削除したいか?
→ ただdisallowするだけではいけません。robots.txtでブロックされたURLは登録されたままになることがあります。一時的にクロールを許可して**noindexを返し**(緊急時はGSCの削除ツールも使う)、削除されてからdisallowします。同時に行いません。
3. 特定のクエリに本物の反復需要(内部と外部)があるか?
→ 検索URLをインデックスしません。 きれいな静的URLに、タイトル、H1、BreadcrumbList、役立つ本文を持つ本物のカテゴリ/コレクション/ランディングページを作ります。需要を専用ページへ昇格し、生の検索パスはブロックし続けます。
4. 空またはゼロ結果の検索は何を返すべきか?
→ **本物の404**を返します(または、すでにブロックされた/searchの背後にコンバージョン重視の結果なしページを置きます)。クロール可能な200 OKの結果なしはソフト404であり、予算を浪費します。
5. 店舗が小規模(同日クロール、URL数が十万未満)か? → クロールバジェット自体は問題でない可能性があります。それでも重複・薄いコンテンツとインデックス肥大化を避けるため、検索URLはブロックします。
Eコマースのサイト内検索SEOチェックリスト
結果ページを封じ込める
- 検索結果パス(
/search、?q=、?s=、プラットフォームの同等パス)をrobots.txtでブロックしている。 - 検索結果URLに
noindexを同時に付けていない(ブロックするとタグが見えない)。 - 内部リンクが検索URLへリンク資産を渡していない(ナビ、サイトマップ、canonicalに入れない)。
- 検索URLがXMLサイトマップに入っていない。
- 登録済み検索URLを、disallow前にクロール許可+noindexまたは緊急時のGSC削除で整理している。
空の結果を処理する
- ゼロ結果ページは本物の
404を返す(200 OKのソフト404ではない)。またはブロックされた検索パスの背後に置く。 - 人向けのゼロ結果体験で顧客を回復する(カテゴリ提案、人気商品、スペル/同義語候補)。
需要を掘り起こす
- 内部検索ログを定期的に見直し、商品不足と顧客の表現を探す。
- 内部検索で頻出する語を、外部の実検索需要と照合する。
- 勝ち筋を専用カテゴリ/ランディングページ(きれいな静的URL、タイトル、H1、
BreadcrumbList、有用な本文)にする。検索URLはインデックスしない。
機能を良くする(UX/CRO)
- 検索が誤字と同義語に対応する。
- 検索が速く、関連性の高い結果を返す。
- 重要なクエリについてマーチャンダイジング/ブーストを設定する。
メンタルモデル
1. 1つの名前に2つの仕事。 「Eコマースのサイト内検索SEO」には、機能を良くする仕事(UX、CRO、検索ログの分析)と、結果URLをオーガニック検索から封じ込める仕事が含まれます。前者は積極的に最適化し、後者は原則として封じ込めます。
2. 検索結果は姿を変えたファセットナビゲーション問題。 ?q= URLは、?color=&size=ファセットと同じく、無限で薄く、近い重複や空ページを含むパターンです。ノイズをrobots.txtでブロックし、空は404、canonicalは弱い代替策とし、実需要は専用ページへ昇格します。
3. robots.txtとnoindexは交換可能ではない。 robots.txtはクロールを止めます(予算を節約しますが、登録済みURLは削除できません)。noindexは登録を止めます(ページを削除できますが、クロール後なので予算は節約できず、ブロックされていれば見えません)。目的に合う方を選び、同じURLに重ねません。
4. シグナルはURLではなくボックスにある。 サイト内検索の価値は結果ページではなくクエリです。検索ログを一次キーワードデータセットとして扱います。URLはブロックし、そこで分かった需要は本物のページにします。
5. 規模は重要度を変えるが、修正方法は変えない。 クロールバジェットは大規模サイトの問題ですが、重複・薄いコンテンツとインデックス肥大化は規模を問わず起きます。検索URLをブロックし、空を404にする封じ込めは、どの規模でも実施します。
サイト内検索SEOを誤る方法
同じ検索URLをdisallowとnoindexにする。 robots.txtでURLをブロックするとGooglebotは取得できず、noindexを見られません。リンクされたブロックURLは裸のURLとして残ることもあります。目的ごとに1つのツールを使います。
クロール予算を節約するためにnoindexを選ぶ。 noindexはクロールを止めません。Googleはタグを見るためにページをリクエストし、捨てるため、“wasting crawling time.” (翻訳)「クロール時間を浪費します」。予算対策にはrobots.txtを使います。
200 OKの「結果なし」ページを返す。 クロール可能なゼロ結果ページが200を返すとソフト404です。本物の404を返すか、すでにブロックされたパスの背後にゼロ結果UXを置きます。
生の/search?q=URLを順位づけしようとする。 需要があっても、生の検索URLは薄く近い重複です。修正は専用カテゴリ/ランディングページであり、検索結果ページをインデックスすることではありません。
ナビ、サイトマップ、「人気の検索」ウィジェットから検索URLへリンクする。 人気検索チップ、自動補完リンク、/search?q=へのサイトマップ登録は、封じ込めたい空間へクローラーを送り込みます。内部リンクは実際のカテゴリ/商品ページへ向けます。
セッションIDとトラッキングパラメーターを検索URLに付ける。 /search?q=shoes&sessionid=…&utm_…は同じ薄いページを複製します。内部リンクからそれらを外します。
小規模店舗なら対象外だと思う。 クロールバジェットの問題がなくても、重複・薄いコンテンツとインデックス肥大化は起こります。規模に関係なく検索URLをブロックします。
Eコマースのサイト内検索 — 早見表
制御ごとの役割
| 制御 | クロールを止める? | インデックスを止める? | 検索ページで使う場面 |
|---|---|---|---|
robots.txtのdisallow | はい | いいえ(リンクURLは残ることがある) | 通常ケース。クロールも順位づけもしたくない |
noindex(クロール可能) | いいえ | はい | 登録済み検索URLを削除する |
robots.txt+noindex | — | 機能しない | 禁止。 ブロックでnoindexタグが隠れる |
本物の404/410 | 「再クロールしない」シグナル | インデックスから削除 | 空/ゼロ結果ページ |
rel=canonical | いいえ | 統合(ヒントのみ) | 弱い代替策。第一選択ではない |
クエリ → 対応
| 状況 | 対応 |
|---|---|
| 標準の検索結果URL | robots.txtでブロック |
| 登録済み検索URLを削除したい | クロール許可+削除まで**noindex**、その後ブロック |
| 本物の反復需要があるクエリ | きれいなURLにカテゴリ/ランディングページを作る。?q=はインデックスしない |
| 空/ゼロ結果検索 | 本物の**404**(またはブロックパスの背後のUX) |
| 検索URLのセッション/トラッキングパラメーター | 内部リンクから外す。パターンをブロック |
要点
- Googleで最も大きいクロール浪費カテゴリはファセットナビゲーションとセッション識別子で、検索結果ページも同じパターンです。
noindexはクロール予算を節約しません。Googleは先にページをリクエストします。- ソフト404(
200 OKの「結果なし」)はクロールされ続け、予算を浪費します。 - クロールバジェットは主に大規模サイトの問題ですが、インデックス肥大化と重複は規模を問いません。
- サイト内検索の価値ある出力は結果URLではなくクエリログです。
Eコマースのサイト内検索SEOツール
- Google Analytics 4 — サイト内検索 — GA4の検索語レポートは、買い物客がサイト内検索に入力した語を記録します。データストリームで検索クエリパラメーターを設定し、内部需要の一次データとして使います。
- プラットフォームの検索分析 — Shopify、Algolia/Klevu/Searchspring、Magentoの検索語レポートなどです。ゼロ結果、人気語、クリック率から、作るべきページと検索UXの問題を把握します。
- Google Search Console — ページのインデックス登録 — 検索/パラメーターURLが除外バケットに増えていないか確認します。増えていれば封じ込めが漏れています。
- GSC — クロールの統計情報 — Googlebotが
/searchや?q=URLに時間を使っていないか確認します。 - GSC — URL検査/削除 — 検索URLの扱いを確認し、すでに登録された検索ページを緊急に整理します。
- Screaming Frog SEO Spider/Ahrefs Site Audit — 内部リンクやサイトマップに入った検索URL、空結果で
200を返すURL、ソフト404、近い重複をクロールで探します。 - キーワード調査ツール(Ahrefs Keywords Explorerなど) — 内部検索で頻出する語に外部検索需要もあるか確認してからページを作ります。
よくあるサイト内検索SEOの問題
robots.txtでブロックした後も検索URLが登録されている
原因の可能性: robots.txtはクロールを防ぎますが、登録解除を保証しません。Googleはブロックされたページのnoindexを読めません。修正: 一時的にクロールを許可し、URLが削除されるまでnoindexを返してから、パターンをdisallowします。site:検索だけでなくURL検査で確認します。
ゼロ結果検索がソフト404になる
原因の可能性: 商品がないときもテンプレートが200 OKを返しています。修正: 本物の404を返すか、クロールをすでにブロックした検索パスの背後に人向けの回復体験を置きます。表示メッセージとは別にHTTPステータスを確認します。
Googlebotが新しいクエリの組み合わせをクロールし続ける
原因の可能性: フォーム、内部リンク、パラメーター、パスの揺れが、robotsルールの想定より大きなURL空間を露出しています。修正: ログから実際の検索URLパターンを棚卸しし、そこへのクロール可能なリンクを削除し、狭くテストしたdisallowルールを更新します。価値ある商品・カテゴリURLは許可されたままか確認します。
昇格したランディングページが古い検索URLと競合する
原因の可能性: 目的別ページを公開した後も、生の検索結果がクロール可能または内部リンクされていることです。修正: ナビゲーションと文脈リンクをきれいなランディングページへ向け、生の検索空間を制御し、ランディングページが自己canonicalであることを確認します。
サイト内検索の簡略例
競合するディレクティブなしでクロールを封じ込める
User-facing search: /search?q=waterproof-boots
robots.txt: Disallow: /search
page-level noindex: not relied on while the path is blocked
XML sitemap: search URL omittedこのブロックは今後のクロールに対応します。URLがすでに登録されている場合は、まずnoindex付きでクロールを許可し、削除後にだけdisallowします。
需要を本物のページへ昇格する
Before: /search?q=gluten-free-protein-bars
After: /collections/gluten-free-protein-bars/きれいなコレクションページには、安定したタイトル、H1、役立つ本文、パンくず、厳選商品、内部リンクを用意します。生の検索URLはインデックス不可の検索空間に残します。
サイト内検索を分析するプロンプト
内部クエリを対応策に分類する
query、search count、result count、conversionsを含むCSVを貼り付けます。モデルに共有する前に個人データを削除します。
You are reviewing ecommerce internal-search demand. For each supplied query, classify it
as: synonym/merchandising fix, zero-result inventory gap, possible curated landing page,
navigation problem, or noise. Explain the evidence from the supplied columns only. Do not
invent external search volume. Return a table and a separate list of items that require
external keyword validation before an indexable page is created.検索URLの制御を監査する
代表的な検索URL、robots.txt、レスポンスヘッダー、該当するHTMLのheadを貼り付けます。
Audit these internal-search URLs for crawl and index-control conflicts. For each URL,
report: robots.txt access, HTTP status, meta or X-Robots-Tag directive, canonical target,
internal-link source, and sitemap presence. Flag robots.txt + noindex conflicts and
200-status zero-result pages. Do not infer any value that is absent from the input. 露出した検索URLを見つけるスクリプト
代表URLのレスポンスとrobotsファイルを確認する
curl -I 'https://www.example.com/search?q=test'
curl -sS 'https://www.example.com/robots.txt'最初のコマンドは実際のHTTPステータスを確認し、2つ目はデプロイされたルールと正確なパスを比較します。自分が管理するサイトに置き換えて実行します。
現在のレンダリングページで検索リンクを見つける
代表的なカテゴリページまたはナビゲーションページのDevTools Consoleで実行します。
[...document.querySelectorAll('a[href]')]
.map(a => a.href)
.filter(href => /(?:\/search(?:\/|\?|$)|[?&](?:q|query|s)=)/i.test(href));結果はすべてレビュー対象です。機能がフォームとして始まっていても、通常のクロール可能なリンクが検索URL空間を露出させることがあるためです。
アクセスログ抽出で検索パスへのリクエスト数を数える
awk '$7 ~ /^\/search([/?]|$)/ {print $7}' access.log | sort | uniq -c | sort -nrログ形式に合わせてリクエストパスのフィールドを調整します。実際にクロールされたバリエーションを示しますが、入力を適切にフィルターしていなければボットかどうかは区別しません。
検索制御が機能することを証明する
クロール制御テスト
実施するテスト: 代表的な検索URLと価値あるカテゴリURLをrobots.txtテスターで確認します。期待結果: 検索パターンはブロックされ、商品・カテゴリパスは許可されます。失敗の解釈: ルールが狭すぎる、広すぎる、またはデプロイ済みURLパターンと一致していません。監視期間: robots.txt公開直後。ロールバック条件: 正常なカタログURLがdisallowされること。
ゼロ結果ステータステスト
実施するテスト: curl -Iで既知のゼロ結果クエリをリクエストします。期待結果: クロール可能なら本物の404、または検索パス全体がすでにブロックされていること。失敗の解釈: クロール可能な200ゼロ結果テンプレートはソフトエラーのリスクです。監視期間: テンプレート公開直後。ロールバック条件: 正常な検索や商品ページがエラーを返し始めること。
昇格ランディングページのテスト
実施するテスト: 新しい目的別URL、そのcanonical、内部リンク、生の検索相当URLを確認します。期待結果: 目的別ページは200を返し、自己canonicalでクロール可能なリンクを受け、生の検索空間は制御されます。失敗の解釈: 2種類のURLが競合しているか、新しいページがオーファンです。監視期間: 技術チェックは直後、その後の再クロール後にSearch Consoleで監視します。ロールバック条件: 制御されないクエリURL空間を公開すること。
サイト内検索の継続指標
検索URLのクロール占有率
指標: 検索エンジンからの確認済みリクエストのうち、内部検索URLへ向かった割合。分かること: 制御したURL空間がクロール活動を消費し続けていないか。取得方法: ボット確認済みサーバーログをパスとパラメーターのパターン別に集計します。基準/現実的な範囲: 変更前の基準を作り、価値あるカタログのクロールを抑制せずに不要な検索URLリクエストを減らします。頻度: 変更後は週次、その後は月次。
ゼロ結果クエリ率
指標: 商品が見つからない内部検索の割合。分かること: 同義語、マーチャンダイジング、ナビゲーション、在庫のどこで顧客がつまずくか。取得方法: 正規化したクエリ別にサイト内検索分析を分けます。基準/現実的な範囲: カテゴリ間で比較し、自社の基準からの推移を見ます。商品構成が違うため、普遍的な目標値は誤解を招きます。頻度: マーチャンダイジングは週次、SEO/コンテンツ計画は月次。
検索を介したコンバージョン
指標: サイト内検索を使ったセッションのコンバージョン率と売上を、クエリ群が分かる形で追います。分かること: 機能がURLを作るだけでなく、顧客の商品発見を助けているか。取得方法: 分析イベントを取引と結合します。基準/現実的な範囲: 非検索セッションと過去期間は文脈として使い、因果の証明とはみなしません。頻度: 月次および関連性変更後。
耐久性のあるページへ昇格した需要
指標: 検証済みの内部クエリテーマから作った目的別ページ数と、そのページのオーガニック表示・コンバージョン。分かること: 一次需要が役立つインデックス可能な在庫になったか。取得方法: 公開リストを管理し、Search Consoleと分析に結合します。基準/現実的な範囲: 各ページを記録した需要根拠に照らして評価します。頻度: 四半期ごと。
時間を使う価値のある資料
自分の関連記事
- 技術SEO入門 — クロールバジェット、インデックス、重複URLの制御を大きな全体像の中で位置づけます。
- ファセットナビゲーション:SEO担当者向けガイド — 内部検索URLを支配する「ノイズをブロックする」考え方に最も近いテーマです。
- クロールバジェット:SEOで知っておくべきこと — 検索結果のような低価値URLが実ページからクロールを奪う理由と、気にすべきサイトを説明します。
- Robots.txtとSEO:知っておくべきこと — 検索結果ページを封じ込めるツールと、クロールとインデックスの違いを説明します。
自分の講演
- 検索の仕組み(SlideShare) — クロール、レンダリング、インデックス、順位づけを説明する講演です。検索URLをクロール浪費として扱うためのメンタルモデルになります。(定型の注意書き:「This is my understanding of systems… not going to be 100% complete or accurate.」 (翻訳)「これはシステムについての私の理解であり、100%完全または正確とは限りません」。)
業界の資料
- Googlebotにとってのクロールバジェット(Google Search Central) — 検索結果ページが該当する低価値URLカテゴリのGary Illyesによる基準リストです。
- クロールバジェットを最適化する(Google Search Central) — robots.txtとnoindexの使い分けとソフト404の浪費警告です。
- ファセットナビゲーションURLのクロールを管理する(Google Search Central) — 内部検索URLに直接対応するファセットナビの手順(robots.txtでブロック、空は
404、canonicalは弱い手段)です。 - Googleの主なクロール問題(Search Engine Land) — 過剰クロールの原因をGary Illyesが説明し、報告の約半分がファセットナビだとしています。
- GoogleのGary IllyesがURLパラメーター問題を引き続き警告(Search Engine Journal) — URL空間が「1 000 URLから焼け付く100万URL」へ膨張する警告で、検索パラメーターにも当てはまります。
自分で確認:Eコマースのサイト内検索SEO
内部検索結果ページとSEOの関係についての簡単な5問です。各問に答えてから、正解を確認してください。
変更履歴
2026年8月6日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年8月6日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。