Panduan Faceted Navigation

Faceted navigation lets shoppers filter sebuah category oleh color, size, price, dan brand — dan diam-diam spawns millions dari near-duplicate URLs itu waste anggaran crawling dan dilute sinyal peringkat. Di sini's cara decide yang filter URLs untuk indeks dan yang untuk suppress, plus canonical-vs-noindex-vs-robots.txt decision table.

Pertama kali diterbitkan: 25 Jun 2026 · Terakhir diperbarui: 8 Agu 2026 · Advanced
Bahasa

Faceted navigation adalah single biggest sumber dari crawl waste mesin pencari hear tentang — Gary Illyes pegs ini di ~50% dari semua crawling issues reported untuk Google. mechanism: setiap filter combination dapat spawn -nya own dapat di-crawl URL, mengubah sebuah 10 000-product catalog ke millions dari near-duplicate halaman. strategic decision muncul sebelum teknis satu — figure out yang filter combinations memiliki nyata penelusuran demand (membuat itu dapat diindeks landing halaman) dan yang adalah pure UX (block them atau bangun them so mereka tidak pernah buat URL). lalu pick right lever: robots.txt berhenti crawling tetapi tidak pengindeksan; noindex menghapus halaman dari indeks tetapi tidak save anggaran crawling; canonical adalah sebuah hint itu consolidates sinyal tetapi tidak berhenti crawling. parameter URL alat di Search Console adalah hilang — deprecated di 2022 — so server-side controls adalah semua Anda've mendapat pada Google. Bing masih memiliki URL Normalization.

TL;DR — Faceted navigation adalah #1 sumber dari overcrawl reported untuk Google (~50% dari crawling complaints, per Gary Illyes). setiap filter combination dapat mint sebuah distinct dapat di-crawl URL, so sebuah kecil catalog hides millions dari near-duplicate halaman — driving duplicate konten, indeks bloat, crawl-budget waste, dan PageRank dilution. decision adalah strategic before ini adalah teknis: yang filter combos memiliki nyata penelusuran demand (→ membuat them dapat diindeks landing halaman) dan yang adalah pure UX (→ suppress). lalu choose right lever, karena mereka’re tidak interchangeable: robots.txt berhenti crawling tetapi tidak pengindeksan; noindex menghapus dari indeks tetapi memerlukan sebuah crawl dan tidak save anggaran crawling; canonical adalah sebuah hint itu consolidates sinyal tetapi tidak berhenti crawling. URL fragments (#) sidestep seluruh masalah karena Google ignores them. GSC parameter URL alat adalah deprecated — server-side controls hanya. Bing masih memiliki URL Normalization.

mechanism: bagaimana filters explode Anda URL space

Faceted navigation becomes sebuah SEO masalah moment sebuah filter perubahan URL di sebuah cara sebuah crawler dapat ikuti. Three terpisah hal mendapatkan conflated di sini, dan mempertahankan them apart membuat rest dari ini artikel click: UI interaction (sebuah shopper clicking sebuah filter), fetchable URL state (apakah itu click perubahan sebuah address sebuah crawler dapat sebenarnya permintaan), dan dapat diindeks landing halaman (apakah itu URL adalah dimaksudkan untuk sit di Google’s indeks di semua). sebuah faceted sistem dapat expose satu dari ini, dua, atau semua three — sebuah client-side filter dengan Tidak URL perubahan memiliki hanya pertama; sebuah kueri-string filter memiliki pertama dua; sebuah curated halaman untuk “blue velvet sofas” (terjemahan) “sofa beludru biru” memiliki semua three, dengan sengaja.

three umum implementations:

Patterncontohcrawl/indeks perilaku
kueri parameters/sofas?color=blue&size=largesebagian besar umum; di-crawl dan dapat diindeks oleh default — harus menjadi managed
Path segments/sofas/blue/large/Cleaner-looking, tetapi harder untuk block systematically dengan robots.txt
URL fragments/sofas#color=blueGooglebot ignores fragments — Tidak crawl/indeks impact di semua

arithmetic adalah seluruh masalah. 10 000 products × 20 colors × 15 sizes × 5 sort orders adalah 15 000 000+ potential URLs. Evidence for this claim Combinatorial filters can turn a modest catalog into millions of possible URL states. Scope: The arithmetic is illustrative; Google documents the underlying infinite-space risk. Confidence: high · Verified: Google: Managing faceted navigation Gary Illyes put failure mode vividly pada LinkedIn: “Sometimes Anda mungkin create ini new fake URLs accidentally, exploding Anda URL space dari a balmy 1000 URLs untuk a scorching 1 million, exciting crawlers itu di turn hammer Anda servers unexpectedly.” (terjemahan) “Sometimes Anda mungkin buat ini baru fake URLs accidentally, exploding Anda URL space dari sebuah balmy 1000 URLs untuk sebuah scorching 1 million, exciting crawler itu di turn hammer Anda server unexpectedly.”

dan Google dapat’t hanya look di sebuah filter URL space dan decide untuk skip ini. Illyes dijelaskan mengapa pada Search Off Record: “Setelah it discovers a set dari URLs, it cannot membuat a decision tentang apakah itu URL space adalah good atau tidak unless it crawled a large chunk dari itu URL space.” (terjemahan) “Setelah ini discovers sebuah set dari URLs, ini cannot membuat sebuah decision tentang apakah itu URL space adalah baik atau tidak unless ini di-crawl sebuah besar chunk dari itu URL space.” itu’s mengapa ini adalah top crawling complaint — oleh time Google knows URLs adalah junk, ini memiliki sudah di-crawl them.

Worked investigation: filters adalah hanya half trap

Google’s 2025 tahun-end crawl review adalah unusually berguna dunia nyata evidence: Gary Illyes attributed tentang 50% dari crawling issues discussed untuk faceted navigation dan lainnya 25% untuk tindakan parameters. itu kedua category penting karena sebuah ecommerce audit itu counts hanya color, size, dan brand dapat miss URLs dibuat oleh add-to-cart, perbandingan, wish-list, sort, session, dan tracking controls.

Di sini adalah investigation pattern, menggunakan illustrative counts alih-alih claiming mereka adalah sebuah typical benchmark. sebuah retailer memiliki 18 000 dapat diindeks products dan categories, tetapi sebuah crawl discovers 640 000 URLs. Grouping crawl dan log samples oleh parameter menampilkan:

URL familyObserved URLsApa ini revealed
filters (color, size, brand)290 000combinations dan duplicate parameter order
tindakan (add, compare, wishlist)170 000dapat di-crawl tautan performing pengguna tindakan
sort dan pagination96 000yang sama sets di berbeda orders dan depths
session dan tracking71 000passive duplicates attached untuk tautan internal
unknown13 000review queue, tidak sebuah automatic block list

perbaiki adalah tidak satu blanket Disallow. hapus dapat di-crawl tindakan tautan, berhenti putting session dan campaign parameters pada tautan internal, normalize duplicate filter orders, kembalikan 404 untuk impossible combinations, dan pertahankan sedikit demand-backed filters sebagai stable landing halaman. lalu verify hasil di server logs: success sinyal adalah crawler permintaan shifting toward category dan product URLs, tidak merely sebuah lebih kecil crawler export.

four masalah ini penyebab

  1. Near-duplicate konten. /washing-machines/samsung/ dan /washing-machines/?brand=samsung dapat sajikan identical product sets. peringkat sinyal split di seluruh keduanya alih-alih consolidating.
  2. indeks bloat. bahkan sebuah fraction dari itu millions dari URLs sitting di indeks drags pada Anda situs’s overall quality sinyal.
  3. crawl-budget waste. setiap crawl spent pada sebuah rendah-nilai facet adalah sebuah crawl Anda genuinely baru products didn’t mendapatkan. effect compounds — ini juga slows penemuan dari fresh konten. (anggaran crawling hanya benar-benar bites di scale; see anggaran crawling untuk siapa sebenarnya perlu untuk care.)
  4. PageRank dilution. sebuah category halaman linking untuk 500 filter combinations spreads -nya internal authority di seluruh 501 destinations alih-alih flowing ini untuk products itu seharusnya peringkat.

Worth saying plainly karena clients tanyakan: ini adalah tidak sebuah penalty risk. Google melakukan tidak hand out manual tindakan untuk faceted-navigation duplication. ini adalah sebuah crawl dan indeks efficiency masalah dan sebuah sinyal-dilution masalah — tidak sebuah duplicate-konten penalty.

strategic decision muncul pertama

sebelum Anda touch robots.txt atau sebuah meta tag, membuat per-URL panggil: melakukan ini filter combination deserve sebuah place di indeks, atau tidak?

  • ini deserves pengindeksan jika ini maps untuk nyata penelusuran demand — sebuah kueri orang sebenarnya jenis. “High-rise skinny jeans,” (terjemahan) “tinggi-rise skinny jeans,” “waterproof hiking boots,” (terjemahan) “waterproof hiking boots,” “blue velvet sofa.” (terjemahan) “blue velvet sofa.” ini become proper landing halaman.
  • ini melakukan tidak jika ini adalah sebuah arbitrary combination, sebuah sort order, atau sebuah deep multi-facet stack tidak seorang pun searches untuk. ini mendapatkan suppressed.

cara temukan line: keyword research. Pull candidate facet modifiers, periksa volume, dan set sebuah threshold. sebuah reasonable bar dalam praktik adalah roughly 300+ monthly searches untuk justify sebuah standalone terindeks facet halaman — semuanya di bawah itu mendapatkan blocked atau fragment-ized. alasan ini penting adalah panjang tail: 99.84% dari keywords mendapatkan fewer daripada 1 000 searches sebuah month, namun mereka account untuk 39,33% dari total penelusuran demand. sebagian besar facet combinations memiliki Tidak demand — tetapi minority itu melakukan adalah sebuah nyata opportunity, dan satu-satunya cara untuk capture them adalah untuk let itu spesifik halaman menjadi terindeks.

Demand alone tidak seluruh gate. sebelum Anda promote sebuah combination untuk sebuah dapat diindeks landing halaman, ini perlu three hal together: verified demand ( keyword research di atas), distinct nilai (konten dan sebuah product set itu sebenarnya differs dari base category — tidak hanya yang sama products di sebuah berbeda order), dan sebuah commitment untuk monitor ini (crawl, indeks, dan performa sinyal, tidak sebuah set-dan-forget flag). Treat setiap promoted halaman sebagai sebuah experiment itu memiliki untuk earn -nya pertahankan, tidak sebuah guaranteed panjang-tail win — see Metrics tab untuk apa untuk track.

teknis levers — dan bagaimana mereka differ

ini adalah di mana sebagian besar implementations go wrong, karena three main controls feel interchangeable dan tidak.

robots.txt disallow — berhenti crawling, Google’s preferred prevention. Blocking filter parameter spaces sementara allowing item halaman dan unfiltered listing adalah strongest crawl-budget lever. Google’s own contoh:

disallow: /*?*products=
disallow: /*?*color=
disallow: /*?*size=
allow: /*?products=all$

catch: robots.txt blocks crawling, tidak indexing. sebuah blocked URL itu memiliki inbound tautan dapat masih muncul di indeks sebagai sebuah URL-hanya hasil (Tidak snippet, karena Google tidak pernah baca halaman). So ini adalah right alat ketika Anda goal adalah “stop wasting crawl on this space,” (terjemahan) “berhenti wasting crawl pada ini space,” tidak “get this out of the index.” (terjemahan) “mendapatkan ini out dari indeks.”

noindex — menghapus dari indeks, tetapi memerlukan sebuah crawl. Google adalah jelas: “Google has to crawl the page in order to find the noindex rule.” (terjemahan) “Google memiliki untuk crawl halaman di order untuk temukan noindex aturan.” So noindex controls indexing, tidak crawling — ini akan tidak save Anda anggaran crawling, karena Googlebot masih memiliki untuk fetch halaman untuk see tag. gunakan ini ketika goal adalah removal dari indeks, tidak crawl efficiency.

rel="canonical" — sebuah hint itu consolidates, weakest untuk crawl. Pointing filtered halaman di unfiltered category consolidates duplicate sinyal, dan per Google ini “mungkin, over time, decrease itu crawl volume dari non-canonical versions” (terjemahan) “dapat, di atas time, decrease crawl volume dari non-canonical versi” — tetapi ini adalah “generally lebih sedikit effective di itu long term” (terjemahan) “umumnya lebih sedikit effective di panjang istilah” daripada robots.txt atau fragments. ini adalah sebuah hint, tidak sebuah directive; Google dapat override ini. dan ini melakukan tidak ada apa pun untuk server muat di pendek istilah, karena Google masih melakukan crawl non-canonical halaman untuk see tag canonical.

URL fragments (#) — sidestep masalah entirely. Karena “Google Search generally tidak dukung URL fragments di crawling dan indexing,” (terjemahan) “Google Search umumnya tidak mendukung URL fragments di crawling dan pengindeksan,” sebuah hash-based filter state like /sofas#color=blue memiliki zero crawl atau indeks impact. ini adalah paling bersih prevention untuk filters dengan Tidak penelusuran demand — filter applies client-side, Tidak baru dapat di-crawl URL adalah ever born.

rel="nofollow" pada filter tautan — semua-atau-tidak ada apa pun. Anda dapat discourage Google dari berikut filter tautan, tetapi per Google “setiap anchor pointing untuk a specific URL harus memiliki itu rel=‘nofollow’ attribute di order untuk it untuk menjadi effective.” (terjemahan) “setiap anchor pointing untuk sebuah spesifik URL harus memiliki rel=‘nofollow’ attribute di order untuk ini untuk menjadi effective.” Miss satu diikuti tautan anywhere pada situs dan seluruh approach leaks. ini adalah juga now sebuah hint, tidak sebuah directive.

See Cheat Sheets tab untuk penuh decision table.

critical don’ts

ini adalah combinations itu diam-diam break:

  • noindex + robots.txt disallow pada yang sama URL. ini adalah classic mistake. jika URL adalah blocked, Googlebot dapat’t fetch ini, so ini tidak pernah sees noindex tag — dan halaman dapat stay terindeks. untuk deindex, Anda harus allow crawling dan sajikan noindex.
  • noindex + canonical pada yang sama URL. Contradictory sinyal. sebagai John Mueller memiliki put ini, “noindex tidak tell Google itu Anda ingin it combined dengan sesuatu else dan itu sinyal seharusnya menjadi forwarded.” (terjemahan) “noindex tidak tell Google itu Anda ingin ini combined dengan sesuatu else dan itu sinyal seharusnya menjadi forwarded.” Pick satu.
  • Canonical alone, expecting crawl-budget relief. ini tidak berhenti crawling. Google mempertahankan fetching non-canonical URLs.

struktur URL best practices untuk facets Anda do indeks

untuk minority dari filtered halaman Anda’ve decided untuk indeks, Google’s docs memberikan jelas aturan:

  1. gunakan standard & separator — tidak commas, semicolons, pipes, atau brackets.
  2. pertahankan sebuah consistent filter order. /sofas/blue/fabric dan /sofas/fabric/blue harus resolve untuk satu canonical form, tidak dua.
  3. Tidak duplicate filter nilai?color=blue&color=blue seharusnya 404, tidak 200.
  4. mengembalikan nyata 404 untuk empty/impossible combinations. jika /sofas/red memiliki Tidak hasil, kirim 404 — jangan sajikan generic 200 “Tidak hasil” (terjemahan) “Tidak hasil” halaman propped up oleh sebuah noindex.
  5. Prefer bersih paths di atas kueri strings untuk dapat diindeks facets — /sofas/blue/ membaca better daripada /sofas?color=blue&style=&sort=.

JavaScript / AJAX faceted nav — prevention, dengan sebuah tradeoff

jika Anda bangun filters sebagai client-side AJAX itu jangan emit nyata <a href> tautan untuk filter URLs, filter applies di browser dan Tidak dapat di-crawl URL adalah ever dibuat. itu’s great untuk anggaran crawling. tradeoff adalah symmetric: Googlebot juga dapat’t reach itu filtered status, so apa pun valuable panjang-tail filter combination tidak akan mendapatkan terindeks either.

gold standard untuk big catalogs adalah sebuah hybrid: pre-render atau server-render tinggi-demand filter combinations sebagai nyata, ditautkan, dapat diindeks halaman dengan unique intro copy dan sitemap inclusion, dan pertahankan semua ephemeral, Tidak-demand status client-side (AJAX, fragments, atau pushState parameters paired dengan sebuah canonical untuk base). Google renders JavaScript, tetapi rendering adalah queued dan lebih lambat daripada HTML crawling — so untuk halaman Anda sebenarnya ingin reliably terindeks, jangan rely pada rendering sisi klien alone. (Lebih pada rendering side di JavaScript SEO.)

parameter URL alat adalah hilang

Address ini early dengan apa pun client, karena half tutorials online masih tell Anda untuk gunakan ini. Google deprecated parameter URL alat di April 2022. alasan: Google mendapat baik cukup di parameter detection itu “hanya tentang 1% dari itu parameter configurations saat ini specified di itu URL Parameters tool adalah useful untuk crawling.” (terjemahan) “hanya tentang 1% dari parameter configurations saat ini specified di parameter URL alat adalah berguna untuk crawling.” Evidence for this claim Google removed the URL Parameters tool after determining that very few configurations remained useful. Scope: This is a historical Search Console change, not a claim that Google never crawls parameters. Confidence: high · Verified: Google: URL Parameters tool deprecated ditanyakan apakah ini mungkin come back, Illyes answered: “Di theory Ya. Dalam praktik Tidak.” (terjemahan) “di theory Ya. dalam praktik Tidak.” tidak ada Search Console control untuk tell Google untuk ignore sebuah parameter anymore — ini adalah server-side management (robots.txt, noindex, fragments) atau tidak ada apa pun.

Bing adalah berbeda. Bing Webmaster alat masih offers URL Normalization, di mana Anda specify yang parameters dapat menjadi stripped, dan per Fabrice Canel “our crawler will not visit the URLs with extra parameters except for an occasional test.” (terjemahan) “crawler kami tidak akan mengunjungi URL dengan parameter tambahan kecuali untuk pengujian sesekali.” Jika Anda care tentang Bing (dan AI penelusuran increasingly leans pada Bing’s indeks), it’s sebuah terpisah, ~5-minute configuration worth melakukan.

sebuah note pada blanket parameter blocking

menjadi careful dengan sweeping robots.txt aturan. jika sebuah parameter menyajikan lebih daripada satu purpose — say ?type= adalah digunakan keduanya untuk sebuah junk facet and untuk sebuah legitimate paginated atau canonical view di suatu tempat — sebuah broad disallow: /*?*type= akan block legitimate URLs too. Audit apa setiap parameter sebenarnya melakukan sebelum Anda block ini, dan prefer sempit aturan plus allow exceptions di atas sebuah catch-semua itu nukes berguna halaman along dengan junk.

cara audit Anda own situs

  • crawl ini. Ahrefs situs Audit atau Screaming Frog akan surface URL explosion, parameter patterns, dan bagaimana deep filtered halaman sit.
  • site: count vs. nyata product count. sebuah site:example.com hasil count itu dwarfs Anda sebenarnya catalog adalah tell-tale sign dari facet-driven indeks bloat.
  • GSC halaman pengindeksan report. cari besar counts dari “Crawled — currently not indexed” (terjemahan) “Dirayapi — saat ini belum diindeks” dan “Duplicate without user-selected canonical” (terjemahan) “Duplikat tanpa canonical pilihan pengguna” — facets tampilkan up di sini.
  • server logs. ground truth untuk crawl waste: mereka tampilkan persis bagaimana banyak dari Googlebot’s time adalah going untuk parameter URLs alih-alih products.
Classify the supplied inventory before choosing controls. A frequent class is a review priority, not proof that every URL in it should be blocked.

The worked sample contains 240 parameter occurrences: 108 filter parameters, 54 tracking parameters, 34 sort parameters, 28 pagination parameters, and 16 unknown parameters. Filter parameters account for 45 percent of the supplied inventory.

Di mana ini sits di pillar

Faceted navigation adalah canonical teknis challenge dari Ecommerce SEO — ini adalah mengapa ecommerce SEO adalah harder daripada regular SEO, tidak berbeda dari ini. ini connects secara langsung untuk ecommerce situs architecture (filters hang off Anda category pyramid), category halaman SEO ( halaman filters langsung pada), dan lebih luas crawl story di crawling dan canonicalization. Teknis SEOs sering arrive di ini topic dari informasi-architecture angle; practical home untuk ini adalah di sini, pada store side.

Add an expert note

Pin an expert quote

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