Nawigacja fasetowa to powszechna funkcja witryn, która umożliwia użytkownikom zmianę sposobu wyświetlania elementów (np. produktów, artykułów czy wydarzeń) na stronie. Jest to popularna i użyteczna funkcja, ale jej najczęstsze wdrożenie, które opiera się na parametrach adresu URL, może generować nieskończone przestrzenie adresów URL, co szkodzi witrynie na kilka sposobów:
Zbyt częste indeksowanie: adresy URL utworzone na potrzeby nawigacji fasetowej wydają się nowe, a roboty nie mogą określić, czy będą one przydatne bez wcześniejszego indeksowania. Dlatego roboty zazwyczaj uzyskują dostęp do bardzo dużej liczby adresów URL nawigacji fasetowej, zanim procesy robotów określą, że te adresy URL są w istocie bezużyteczne.
Wolniejsze indeksowanie: jeśli roboty indeksujące poświęcają czas na indeksowanie bezużytecznych adresów URL, mają mniej czasu na indeksowanie nowych, przydatnych adresów URL.
Typowy adres URL nawigacji fasetowej może zawierać w ciągu zapytania różne parametry związane z właściwościami elementów, według których są one filtrowane. Na przykład:
Zmiana dowolnego z parametrów adresu URL products, color i size spowoduje wyświetlenie na stronie źródłowej innego zestawu elementów. Często oznacza to bardzo dużą liczbę możliwych kombinacji filtrów, co przekłada się na bardzo dużą liczbę możliwych adresów URL. Aby oszczędzić zasoby, zalecamy postępowanie z tymi adresami w jeden z tych sposobów:
Jeśli nie chcesz, aby adresy URL nawigacji fasetowej były indeksowane, zablokuj ich indeksowanie.
Jeśli chcesz, aby adresy URL nawigacji fasetowej były indeksowane, upewnij się, że są one zgodne ze sprawdzonymi metodami opisanymi w następującej sekcji. Pamiętaj, że indeksowanie adresów URL nawigacji fasetowej zwykle pochłania dużo zasobów obliczeniowych ze względu na ogromną liczbę adresów URL i operacji potrzebnych do renderowania tych stron.
Jeśli chcesz oszczędzać zasoby serwera i nie chcesz, aby adresy URL nawigacji fasetowej były widoczne w wyszukiwarce Google, możesz uniemożliwić ich indeksowanie w jeden z poniższych sposobów.
Użyj pliku robots.txt, aby zablokować indeksowanie adresów URL nawigacji fasetowej. Często nie ma powodu, aby zezwalać na indeksowanie produktów z filtrami, ponieważ pochłania to zasoby serwera bez żadnej korzyści lub z niewielką korzyścią. Zamiast tego zezwól na indeksowanie tylko stron poszczególnych produktów oraz strony z listą produktów bez filtrów.
Inne sposoby sygnalizowania preferencji dotyczącej tego, które adresy URL nawigacji fasetowej mają być indeksowane, a które nie, to użycie elementu rel="canonical"link i atrybutu kotwicy rel="nofollow". Jednak te metody są na dłuższą metę mniej skuteczne niż wspomniane wcześniej metody.
Używanie parametru rel="canonical"
do określenia, który adres URL jest kanoniczną wersją adresu URL nawigacji fasetowej
z czasem może zmniejszyć objętość indeksowania niekanoniczych wersji tych adresów URL. Jeśli na przykład masz 3 typy stron z filtrami, możesz użyć parametru rel="canonical" do wskazania niefiltrowanej wersji:
https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny
określa <link rel="canonical" href="https://example.com/items.shtm?products=fish" >.
Używanie atrybutów rel="nofollow" w kotwicach wskazujących na strony wyników po filtrowaniu może być korzystne, ale pamiętaj, że aby były one skuteczne, każda kotwica wskazująca na konkretny adres URL musi mieć atrybut rel="nofollow".
Upewnij się, że adresy URL nawigacji fasetowej są optymalne pod kątem internetu
Jeśli chcesz, aby adresy URL nawigacji fasetowej mogły być indeksowane, postępuj zgodnie z tymi sprawdzonymi metodami, aby zminimalizować negatywne skutki indeksowania dużej liczby potencjalnych adresów URL w witrynie:
Używaj standardowego w branży separatora parametrów adresu URL „&”. Znaki takie jak przecinek (,), średnik (;) i nawiasy ([ i ]) są trudne do wykrycia przez roboty jako separatory parametrów (ponieważ najczęściej nie są to separatory).
Jeśli kodujesz filtry w ścieżce adresu URL, np. /products/fish/green/tiny, upewnij się, że ich kolejność logiczna jest zawsze taka sama i że nie ma zduplikowanych filtrów.
Zwracaj kod stanu HTTP 404, gdy kombinacja filtrów nie zwraca wyników.
Jeśli w zasobach witryny nie ma zielonych ryb, użytkownicy i roboty powinni zobaczyć błąd „nie znaleziono” z odpowiednim kodem stanu HTTP (404). Podobnie powinno się stać, gdy adres URL zawiera zduplikowane filtry lub nielogiczne kombinacje filtrów oraz nieistniejące adresy URL stron z przewijaniem. Jeśli kombinacja filtrów nie daje żadnych wyników, nie przekierowuj do ogólnej strony błędu „nie znaleziono”. Zamiast tego wyświetl błąd „Nie znaleziono” z kodem stanu HTTP 404 w adresie URL, w którym wystąpił błąd.
[null,null,["Ostatnia aktualizacja: 2025-08-04 UTC."],[],["Faceted navigation URLs, often using parameters, can lead to overcrawling and slower discovery of new content. To manage this, prevent crawling of these URLs using `robots.txt` to disallow specific parameters or employ URL fragments instead of parameters. Alternatively, use `rel=\"canonical\"` or `rel=\"nofollow\"` to reduce crawling of these pages. If faceted URLs are needed, utilize `&` for parameters, maintain consistent filter order, and return `404` for no-result combinations.\n"],null,["# Managing crawling of faceted navigation URLs | Google Search Central\n\nManaging crawling of faceted navigation URLs\n============================================\n\n\nFaceted navigation is a common feature of websites that allows its visitors to change how items\n(for example, products, articles, or events) are displayed on a page. It's a popular and useful\nfeature, however its most common implementation, which is based on URL parameters, can generate\ninfinite URL spaces which harms the website in a couple ways:\n\n- **Overcrawling**: Because the URLs created for the faceted navigation seem to be novel and crawlers can't determine whether the URLs are going to be useful without crawling first, the crawlers will typically access a very large number of faceted navigation URLs before the crawlers' processes determine the URLs are in fact useless.\n- **Slower discovery crawls**: Stemming from the previous point, if crawling is spent on useless URLs, the crawlers have less time to spend on new, useful URLs.\n\n\nA typical faceted navigation URL may contain various parameters in the query string related to the\nproperties of items they filter for. For example: \n\n```\nhttps://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny\n```\n\n\nChanging any of the URL parameters `products`, `color`, and\n`size` would show a different set of items on the underlying page. This often means a\nvery large number of possible combinations of filters, which translates to a very large number of\npossible URLs. To save your resources, we recommend dealing with these URLs one of the following\nways:\n\n- If you don't need the faceted navigation URLs potentially indexed, prevent crawling of these URLs.\n- If you need the faceted navigation URLs potentially indexed, ensure that the URLs follow our best practices outlined in the following section. Keep in mind that crawling faceted URLs tends to cost sites large amounts of computing resources due to the sheer amount of URLs and operations needed to render those pages.\n\nPrevent crawling of faceted navigation URLs\n-------------------------------------------\n\n\nIf you want to save server resources and you don't need your faceted navigation URLs to show up in\nGoogle Search, you can prevent crawling of these URLs with one of the following ways.\n\n- **Use [robots.txt](/search/docs/crawling-indexing/robots/intro) to disallow crawling of faceted navigation URLs.** Oftentimes there's no good reason to allow crawling of filtered items, as it consumes server resources for no or negligible benefit; instead, allow crawling of just the individual items' pages along with a dedicated listing page that shows all products without filters applied. \n\n ```\n user-agent: Googlebot\n disallow: /*?*products=\n disallow: /*?*color=\n disallow: /*?*size=\n allow: /*?products=all$\n ```\n- **Use URL fragments to specify filters.** [Google Search generally doesn't support URL fragments in crawling and indexing](/search/docs/crawling-indexing/url-structure#fragments). If your filtering mechanism is based on URL fragments, it will have no impact on crawling (positive or negative). For example, instead of URL parameters, use URL fragments: \n\n ```\n https://example.com/items.shtm#products=fish&color=radioactive_green&size=tiny\n ```\n\n\nOther ways to signal a preference of which faceted navigation URLs (not) to crawl is using\n`rel=\"canonical\"` `link` element and the `rel=\"nofollow\"` anchor\nattribute. However, these methods are generally less effective in the long term than the\npreviously mentioned methods.\n\n- **Using [`rel=\"canonical\"`](/search/docs/crawling-indexing/consolidate-duplicate-urls#rel-canonical-link-method)\n to specify which URL is the canonical version of a faceted navigation URL** may, over time, decrease the crawl volume of non-canonical versions of those URLs. For example, if you have 3 filtered page types, consider pointing the `rel=\"canonical\"` to the unfiltered version: `https://example.com/items.shtm?products=fish&color=radioactive_green&size=tiny` specifies `\u003clink rel=\"canonical\" href=\"https://example.com/items.shtm?products=fish\" \u003e`.\n- **Using\n [`rel=\"nofollow\"`](/search/docs/crawling-indexing/qualify-outbound-links#nofollow)\n attributes on anchors pointing to filtered results pages** may be beneficial, however keep in mind that every anchor pointing to a specific URL must have the `rel=\"nofollow\"` attribute in order for it to be effective.\n\nEnsure the faceted navigation URLs are optimal for the web\n----------------------------------------------------------\n\n\nIf you need your faceted navigation URLs to be potentially crawled and indexed, ensure you're\nfollowing these best practices to minimize the negative effects of crawling the large number of\npotential URLs on your site:\n| Keep in mind that having these URLs crawled means an increased resource usage on your server and, potentially, slower discovery of new URLs on your site.\n\n1. **Use the industry standard URL parameter separator '`&`'.** Characters like comma (`,`), semicolon (`;`), and brackets (`[` and `]`) are hard for crawlers to detect as parameter separators (because most often they're not separators).\n2. If you're encoding filters in the URL path, such as `/products/`**fish** `/`**green** `/`**tiny**, ensure that the logical order of the filters always stays the same and that no duplicate filters can exist.\n3. **Return an HTTP `404` status code when a filter combination doesn't return\n results.** If there are no green fish in the site's inventory, users as well as crawlers should receive a \"not found\" error with the proper HTTP status code (`404`). This should also be the case if the URL contains duplicate filters or otherwise nonsensical filter combinations, and nonexistent pagination URLs. Similarly, if a filter combination has no results, don't redirect to a common \"not found\" error page. Instead, serve a \"not found\" error with the `404` HTTP status code under the URL where it was encountered. If [you have a single-page app](/search/docs/crawling-indexing/javascript/javascript-seo-basics#avoid-soft-404s) this might not be possible. Follow the best practices for single page apps."]]