ファセットナビゲーション
ファセットナビゲーションとは、フィルターと並び替え(カテゴリ、タグ、価格、並び順など)を組み合わせて、ユーザーがコンテンツリストを絞り込めるようにするUIパターンです。ECのカテゴリページやブログのタグ・フィルターページでよく使われ、ユーザビリティを高めますが、最も難しいテクニカルSEOの問題の一つであるURLの爆発を引き起こします。
ファセットナビゲーションとは、フィルターと並び替え(カテゴリ、タグ、価格、並び順など)を組み合わせて、ユーザーがコンテンツリストを絞り込めるようにするUIパターンです。ECのカテゴリページやブログのタグ・フィルターページでよく使われ、ユーザビリティを高めますが、最も難しいテクニカルSEOの問題の一つであるURLの爆発を引き起こします。
なぜ重要か
各5つの選択肢を持つ3つのフィルターは、理論上5³=125通りのURLの組み合わせを生み出します。フィルターを増やせば、数万のURLに膨れ上がります。Googlebotがそれらをすべてクロールすると、次のことが起こります。
- クロールバジェットの浪費: リソースが、本来のコンテンツ(実際の記事)ではなくフィルターの組み合わせに流れます。
- 重複コンテンツ: 同じ記事リストが、数十もの並び替え・フィルターURLの下で繰り返されます。
- 薄いコンテンツ: 結果が0〜2件のフィルターの組み合わせが、インデックスに積み上がります。
- 薄まるリンクエクイティ: バックリンクがcanonicalなURLではなくパラメータだらけのURLに着地し、ランキングシグナルが分散します。
Googleの推奨する対処法
1. 価値あるファセットのみをインデックスする: 実際の検索需要がある組み合わせ(例:「ソウルのイタリアンレストラン」)を許可し、誰も検索しない組み合わせ(例:「価格の降順で並び替え」)をブロックします。
2. canonicalによる正規化: 意味的に同等な組み合わせのcanonicalを、一つの代表的なURLに向けます。例: /blog?tag=seo&sort=latest → canonical /blog?tag=seo。
3. noindex, followのメタタグ: インデックスさせたくないフィルターページには<meta name="robots" content="noindex, follow">を使います。インデックス登録はブロックしつつ、Googleが内部リンクをたどることは許可します。
4. robots.txtのDisallow: Googlebotに完全にスキップさせたいURLパターン(?sort=、?view=、?utm=)は、robots.txtでブロックします。これは慎重に使いましょう。それらのURLへの外部リンクからのランキングシグナルもブロックしてしまうためです。
5. URLパラメータツールはもうない: Googleは2022年にSearch ConsoleのURLパラメータツールを廃止しました。パラメータの処理は現在、canonicalタグ、メタロボット、robots.txtのみに依存します。
6. フィルターリンクへのrel="nofollow": フィルターリンクにnofollowを適用し、クローラーがそれらを追いかけないようにします。強引ですが効果的です。
インデックスするものとブロックするもの
インデックスを許可:
- 明確なトピックを表す主要なカテゴリ・タグページ
- 検索需要が実証されたフィルターの組み合わせ
- 独自の説明文で充実させたランディングページ
インデックスをブロック:
- 並び順のURL(
?sort=price_asc、?sort=date_desc) - 1ページあたりの表示件数のURL(
?per_page=20) - サイト内検索結果のURL(
?q=...) - 3つ以上のフィルターを組み合わせたページ
- セッションやトラッキングのパラメータを持つURL
診断方法
- Search Consoleのカバレッジレポート: 「クロール済み — インデックス未登録」とマークされたURLにパラメータの乱用がないか確認します。
- Ahrefs / Screaming Frogのサイトクロール: サイトが実際に公開しているURL数を測定します。想定の10倍であれば、ファセットの問題があります。
- ログファイル分析: どのURLパターンがGooglebotのリクエストを消費しているかを確認し、クロールバジェットの浪費を診断します。
Sources: