ファセットナビゲーションSEO:検索されるフィルターページだけをインデックスし、残りはrobots.txt、noindex、canonicalタグ、404で管理しましょう。

このページの内容
要点
ファセットナビゲーション(カテゴリページの色、サイズ、ブランド、価格などの絞り込み機能)は、組み合わせごとに新しいURLを作り、ストアのクロール可能なページ数を数千倍に増やすことがあります。実際の検索と一致し、十分な商品数があるフィルターページだけをインデックスし、それらには整理された静的URLと独自のコンテンツを与えてください。残りはGoogleから遠ざけます。robots.txtでクロールを止め、noindexやcanonicalタグでインデックスに入らないようにし、空の組み合わせには404を返します。
さらに詳しく知るには、こちらに質問
クイック診断
SEOはあなたに向いている?どう始めるべき?
Sorankはあなたの回答にぴったりです
ご自身のサイトで3日間お試しいただき、Google、ChatGPT、その他のAIでの現状をご確認ください。
3日間の無料トライアルを開始3日間無料、いつでも解約できます。90日間成果保証(成果が出なければ返金)。
ファセットナビゲーションSEOは、ショッパーが自由に絞り込めるようにしながら、Googleが順位を狙う価値のあるフィルターページにだけ時間を使うようにする取り組みです。Googleは、ファセットナビゲーションについてのCrawling Decemberの記事(2024年12月)で、サイト運営者から寄せられる過剰クロールの問題の「群を抜いて最も多い原因」だと述べています。また、以前の推奨事項を、ファセットナビゲーションのURL管理に関する公式ドキュメント(2025年12月に最終更新)にまとめました。このガイドでは、フィルターが問題を起こす理由、どのファセットページをインデックスするかの判断方法、残りのページに使うべき制御方法、そしてSearch Consoleでの結果の確認方法を解説します。
ファセットナビゲーションは、属性によって一覧ページを絞り込むフィルターの集まりです。ファセットは一つの属性(色、サイズ、ブランド、素材、価格帯)で、各ファセットには値(黒、42、Nike)があります。オンラインストア、不動産ポータル、求人サイト、旅行サイト、ディレクトリなど、長いリストを絞り込む必要がある場所ならどこにでもあります。
適用されたフィルターは、通常次の3つのいずれかの方法でURLを変えます。
ファセットナビゲーションはカテゴリツリーとは異なります。カテゴリ(シューズ、その中のランニングシューズ)はあなたが設計する固定の階層ですが、ファセットは組み合わせ可能なので、生成されるページ数はあなたではなく訪問者のクリックによって決まります。SEOの問題はここから始まります。だからこそ、ファセットは初日からサイトアーキテクチャの計画に組み込むべきなのです。
問題は計算にあります。ファセットが4つあるカテゴリを考えてみましょう。色が12種類、サイズが10種類、ブランドが20種類、価格帯が5種類です。ファセットごとに0個または1個の値を許すだけで、13 × 11 × 21 × 6 = 1つのカテゴリに対して18,018通りのURLになります。複数選択(黒と青)、3種類の並び順、「1ページあたりの商品数」の切り替えを加えると、合計は100,000を超えます。Googleのクローラーは、リンクをたどってそのすべてを見つけられます。
このURLの爆発は4つの問題を引き起こします。
Googleのクロールバジェットのガイドは、100万ページ以上のサイト、または毎日変化する10,000ページ以上のサイトを対象としています。ファセットナビゲーションは、2000件の商品を持つストアが、気づかないうちにその規模に入ってしまう一般的な経路です。
一部のファセットページは順位を狙う価値があります。「黒のランニングシューズ」や「Nikeのトレイルシューズ」は実際に検索されるキーワードであり、絞り込まれたページは一般的なカテゴリよりもそれに適切に答えられます。ルールは次のとおりです。ファセットページは、人々が入力する検索クエリに一致し、有用であるだけの商品数があり、時間が経っても安定している場合にのみインデックスしてください。
| ファセットの種類 | 例 | 検索需要 | 推奨する扱い |
|---|---|---|---|
| 商品タイプまたはサブカテゴリ | /shoes/trail/ | 高い | 本物のカテゴリページとしてインデックス |
| ブランド | /shoes/running/nike/ | 多くの場合高い | 商品数が十分ならインデックス |
| 色、素材、性別、用途 | /shoes/running/black/ | さまざま | キーワード調査で需要が確認できた場合のみインデックス |
| サイズ、幅 | ?size=42 | 低い(一部のニッチを除く) | ユーザーにはクロール可能だがインデックスしない |
| 価格帯、評価、在庫状況 | ?price=50-100 | 非常に低い | クロールをブロック |
| 並び順、表示形式、1ページあたりの件数 | ?sort=price_asc | なし | クロールをブロック |
| 1つのファセットで2つ以上の値、または3つ以上のファセットの組み合わせ | ?color=black&color=blue | ほぼなし | クロールをブロック |
| セッションや追跡のパラメータ | ?sessionid=, ?utm_source= | なし | 整理されたURLへcanonical |
ファセットページをインデックス可能にする前に、次の3つを確認してください。
これらを満たしたページは、それ自体がランディングページになります。整理された静的URL、独自のtitleとH1、短い導入文、親カテゴリからのリンク、そしてXMLサイトマップへの掲載です。カテゴリページの最適化ガイドでは、このオンページの作業を詳しく扱っています。
ヒント
効果のある組み合わせは静的URL(/shoes/running/black/)にし、それ以外のフィルターはパラメータのままにしておきましょう。そうすれば、順位を狙うページに触れずに、すべてのパラメータをrobots.txtの1つのルールでブロックできます。
各方法は異なる段階に作用します。クロール、インデックス、シグナルの統合のいずれかです。3つすべてをこなす方法はないため、ほとんどのサイトは複数を組み合わせています。
| 方法 | クロールを止める | インデックスから遠ざける | シグナルを統合する | 主な制限 |
|---|---|---|---|---|
| robots.txtのDisallow | はい | 概ね(ブロックされたURLでも、リンクがあればコンテンツなしでインデックスに残ることがある) | いいえ | Googleはブロックされたページのタグを見られない |
| Meta robots noindex | いいえ(時間が経つとクロール頻度が下がる) | はい | いいえ | ページはクロール可能な状態を保つ必要がある |
| rel="canonical" | 部分的に、時間をかけて | 通常は | はい | ページの内容が大きく異なる場合、Googleが無視できるヒント |
| フィルターリンクのrel="nofollow" | 部分的に | いいえ | いいえ | すべての内部リンクと外部リンクに付ける必要がある |
| フラグメント(#)またはJavaScriptフィルター | はい | はい | 不要 | フィルター済みのページは決して順位を得られない |
| 空の組み合わせに404 | はい(しばらく経てば) | はい | 不要 | 無効または空のフィルターにのみ使う |
フィルターされたURLが検索結果に表示される必要がない場合、Googleのドキュメントはrobots.txtの利用を推奨しています。Disallow: /*?*sort=やDisallow: /*?*price=のようなルールは、GooglebotがそれらのURLをリクエストすること自体を防ぎ、クロールバジェットをすぐに節約します。広すぎるワイルドカードは本物のカテゴリページまでブロックしてしまうことがあるため、公開前に各パターンをrobots.txtチェッカーで検証してください。
noindexタグは、Googleの検索結果からページを確実に取り除きます。ただし、タグを読むためにGoogleはページをクロールする必要があるため、短期的にはクロールバジェットを節約しません。すでにインデックスに入っていて、そこから出す必要があるファセットページに使ってください。
注意
ページをrobots.txtでブロックしながら、同時にnoindexを追加することは絶対にしないでください。Googleのnoindexに関するドキュメントによれば、ブロックされたクローラーはそのルールを決して見られないため、ページが検索結果に残る可能性があります。先にGoogleにnoindexを再クロールさせ、URLがインデックスから消えてからDisallowを追加してください。
/shoes/running/?color=black&sort=newに、/shoes/running/?color=blackを指すcanonicalタグを設定すると、どのバージョンを残すかをGoogleに伝え、リンクのシグナルをまとめられます。Googleはこれをヒントとして扱います。フィルターされたページが、canonicalの対象とはまったく異なる商品群を表示している場合、Googleは独自のcanonicalを選ぶことがあり、それはSearch Consoleで重複、ユーザーが選択したcanonicalではないなどのステータスとして現れます。canonicalは並び順、追跡パラメータ、小さなバリエーションには適していますが、商品リストを丸ごと変えるフィルターには向きません。
Googleは、結果のないフィルターの組み合わせ、重複したフィルター、意味をなさない組み合わせ、存在しないページネーションページに対して、一般的なエラーページへのリダイレクトではなく404ステータスを求めています。同じ考え方は、3ページしかないリストの9ページ目にも当てはまります。この問題はページネーションのSEOガイドで扱っています。
今はなくなったツールがあります。Search Consoleの「URLパラメータ」ツールです。Googleは2022年に廃止しました。そこで設定された構成のうちクロールに役立っていたのは約1%だけだと指摘しています。パラメータの扱いは、今ではご自身のrobots.txt、canonical、内部リンクで行います。
Shopify、WooCommerce、Magentoでは、フィルターアプリやテーマがそれぞれ独自の方法でURLを生成します。ルールを書く前に、お使いのストアが何を生成しているかを確認し、テーマやアプリを更新するたびに確認し直してください。ECサイトのSEO監査には、この確認を毎四半期含めるべきです。
変更の1か月後に、これらの確認を繰り返してください。インデックス内の結果はゆっくり変わります。noindexやcanonicalが効果を持つ前に、Googleは各URLを再クロールしなければなりません。
ChatGPT、Gemini、Perplexityなどの AIアシスタントは、回答する前に購入に関する質問をいくつかの検索に分解します。「150ドル以下の女性用の防水トレイルシューズ」のような依頼は、商品タイプ、用途、性別、価格についての検索になり、それはまさにあなたのファセットです。よく作られたファセットページ(明確なtitle、テキストに書かれた属性、構造化された商品データ、十分な商品数)は、そうした検索が取得して引用するタイプのページです。テキストがなく、titleが重複したパラメータ付きURLは該当しません。
クロールの効率は、AIクローラーにとっても重要です。?sort=のバリエーションに訪問を費やすボットは、有用なページにたどり着く数が減ります。同じルール(価値のない組み合わせをブロックし、良い組み合わせを開放する)が、Googleと AIアシスタントの両方を助けます。Shopifyストアの AI引用に関する調査では、これらのアシスタントが商品ページやカテゴリページをどう拾うかを示しています。
難しいのは、どの組み合わせが独自のページに値するかを選ぶことです。Sorankの自動キーワードリサーチは、カテゴリの背後にある属性検索を見つけ、トピッククラスターのジェネレーターがそれらをグループ化します。これにより、インデックス可能なファセットページはそれぞれ異なる1つのクエリを狙い、2つのページが同じキーワードを奪い合うことがなくなります。

どのフィルターをページにするかを決め、それ以外のすべての組み合わせをGoogleのクロールから遠ざけたとき、ファセットナビゲーションはSEOのために機能します。まずパラメータの一覧を作り、並び順と価格のパラメータをブロックしてから、人々が検索する組み合わせのためにランディングページを作りましょう。その組み合わせを自動的に見つけて、周辺のコンテンツを公開するには、Sorankのプランをご覧ください。3日間の無料トライアルがあります。
いいえ。ファセットナビゲーションはショッパーの助けになり、適切なフィルターの組み合わせがインデックス可能なランディングページになれば、トラフィックをもたらすこともあります。問題になるのは、すべての組み合わせがクロールもインデックスもできる状態のときだけです。その場合、クロールバジェットが浪費され、インデックスが重複ページで埋まります。解決策は、Googleがクロールとインデックスを行える組み合わせを制御することです。
どちらもGoogleにとって有効です。よくある構成は、順位を狙いたい少数の組み合わせには静的パス(/shoes/running/black/)を使い、それ以外のすべてのフィルターにはクエリパラメータを使うものです。この分け方なら、ランディングページをブロックせずに、すべてのパラメータをrobots.txtでブロックしやすくなります。
クロール可能なリンクや新しいURLを作らずにページを変えるフィルターは、クロールの無駄を避けられます。Googleは通常、#以降のフラグメントを無視します。欠点は、そうしたフィルター済みの表示が一つも順位を得られないことです。価値の低いフィルターにはJavaScriptを使い、検索と一致する組み合わせには、HTMLリンクを備えた本物のURLを使ってください。
先行導入企業のご紹介
