W adresach kategorii, list produktów i archiwów najwięcej bałaganu robią nie same produkty, tylko parametry: ?sort=price, ?color=black, ?page=3, ?size=xl. Jeden dział sklepu potrafi nagle wygenerować tysiące adresów, z których większość pokazuje prawie to samo. Google widzi wtedy osobne URL-e, crawlery zaczynają krążyć po wariantach, a właściciel strony po kilku tygodniach znajduje w Search Console komunikaty o duplikatach, wybranych innych kanonicznych adresach albo stronach wykluczonych z indeksu.
Atrybut canonical pomaga uporządkować takie sytuacje, ale nie jest magicznym przełącznikiem. To nie jest „schowaj tę stronę”. To raczej wskazanie: „ten adres traktuj jako wersję główną”. I właśnie tu zaczynają się błędy. Przy sortowaniu canonical zwykle powinien prowadzić do podstawowej kategorii. Przy filtrach — zależy, czy filtr ma samodzielną wartość SEO. Przy paginacji natomiast masowe wskazywanie strony pierwszej jako canonical to jeden z najgorszych pomysłów, bo Google zaleca, aby każda strona paginacji miała własny adres kanoniczny.
Canonical nie jest blokadą indeksacji — to sygnał, który trzeba dobrze ustawić
Canonicalizacja polega na wyborze reprezentatywnego adresu URL dla treści, która występuje pod kilkoma podobnymi lub identycznymi adresami. Google samo wybiera adres kanoniczny, ale właściciel strony może mu w tym pomóc przez przekierowania, rel="canonical" i spójne linkowanie wewnętrzne. Ważny niuans: canonical jest silnym sygnałem, ale nie bezwzględnym nakazem. Google może wybrać inny adres, jeśli sygnały na stronie są sprzeczne albo wskazany URL wygląda gorzej z perspektywy użytkownika.
Praktycznie oznacza to jedno: canonical nie służy do blokowania wszystkiego, czego nie chcemy widzieć w indeksie. Jeżeli adres ma zniknąć z wyników, potrzebny jest noindex. Jeżeli crawler nie powinien w ogóle tracić czasu na całe grupy parametrów, używa się reguł w robots.txt. Jeżeli duplikat ma przekazać sygnały do wersji głównej, wtedy stosuje się canonical.
Najprostszy przykład:
<link rel="canonical" href="https://example.com/buty-sportowe/" />
Taki zapis powinien znaleźć się w sekcji <head> strony duplikującej lub bardzo podobnej do adresu głównego. Lepiej używać pełnych, absolutnych adresów URL, a nie ścieżek względnych typu /buty-sportowe/, bo względne kanonicale łatwiej psują się przy środowiskach testowych, migracjach i zmianach domeny. Google wprost rekomenduje absolutne adresy w canonicalu.
Najczęstsze błędy, które widziałbym jako pierwsze do sprawdzenia w audycie:
- canonical wskazuje adres z parametrem, mimo że wersją główną powinna być czysta kategoria;
- strona ma dwa różne canonicale — jeden z CMS-a, drugi z modułu SEO;
- canonical prowadzi do URL-a z przekierowaniem, błędem 404 albo
noindex; - sitemap zawiera inne adresy niż te wskazywane jako kanoniczne;
- JavaScript podmienia canonical po załadowaniu strony;
- linkowanie wewnętrzne prowadzi do wersji parametrycznych, a canonical wskazuje wersję czystą.
Priorytet? Najpierw trzeba ujednolicić sygnały. Jeżeli w sitemapie jest /buty-sportowe/?sort=price, w menu linkujesz do /buty-sportowe/, a canonical z szablonu wskazuje /category/buty-sportowe, robot nie dostaje porządku, tylko sprzeczne sugestie. Google zaleca spójność między metodami canonicalizacji i linkowanie wewnętrzne do adresu, który faktycznie uznajemy za kanoniczny.
Tu nie ma sensu zaczynać od narzędzi zaawansowanych. Najpierw trzeba wejść w kod strony, sprawdzić <head>, porównać canonical z adresem w sitemapie, kliknąć linki z listingu i zobaczyć, jakie URL-e są generowane po sortowaniu, filtrowaniu i przejściu na kolejne strony paginacji. Dopiero potem można diagnozować indeksację w Search Console. Google zaleca użycie narzędzia URL Inspection, żeby sprawdzić, który adres został faktycznie wybrany jako kanoniczny.
Sortowanie i filtrowanie: które adresy indeksować, a które odciąć
Sortowanie zwykle nie tworzy nowej treści. Kategoria „buty sportowe” posortowana od najtańszych, najdroższych, najnowszych albo najlepiej ocenianych nadal pokazuje tę samą pulę produktów, tylko w innej kolejności. Dla użytkownika to wygodne. Dla wyszukiwarki — często duplikat.
Dla adresów sortowania decyzja jest dość twarda:
/buty-sportowe/?sort=price-asc
/buty-sportowe/?sort=price-desc
/buty-sportowe/?sort=newest
Jeżeli te adresy nie mają unikalnego tytułu, opisu, linkowania i osobnej intencji wyszukiwania, nie powinny walczyć o indeks. Najczęściej canonical powinien wskazywać czystą kategorię:
<link rel="canonical" href="https://example.com/buty-sportowe/" />
Google w dokumentacji dla paginacji i list wyników podaje przykład sortowania przez ?order=price i zaleca unikanie indeksowania wariantów tej samej listy wyników z filtrami lub alternatywnymi sortowaniami. Do tego można użyć noindex albo ograniczyć crawlowanie określonych wzorców URL w robots.txt.
Z filtrami jest trudniej, bo część filtrów robi śmietnik, a część tworzy dobre landing page’e. Różnica jest biznesowa i SEO-wa, nie tylko techniczna.
Adres typu:
/buty-sportowe/?color=black&size=43
często nie zasługuje na indeks, bo stan magazynowy będzie się zmieniał, opis jest taki sam jak w kategorii, a kombinacja może za tydzień pokazać 0 produktów. Ale adres:
/buty-sportowe/czarne/
może mieć sens, jeśli fraza czarne buty sportowe ma popyt, listing ma stałą ofertę, unikalny opis, poprawny tytuł, nagłówek H1, breadcrumbs i linkowanie z kategorii nadrzędnej. Wtedy taki URL powinien być samokanoniczny, czyli wskazywać sam siebie:
<link rel="canonical" href="https://example.com/buty-sportowe/czarne/" />
Tu warto przyjąć zasadę graniczną: indeksujemy tylko te filtry, które mogą być samodzielną stroną docelową. Nie „bo filtr istnieje”. Nie „bo CMS wygenerował adres”. Samodzielna strona docelowa powinna spełniać minimum:
- ma stabilny zestaw produktów lub treści;
- odpowiada na realną intencję wyszukiwania;
- ma unikalny title i H1;
- nie tworzy tysięcy pustych wariantów;
- jest linkowana wewnętrznie;
- ma canonical do siebie, a nie do kategorii ogólnej.
Cała reszta powinna być traktowana jako funkcja użytkowa, nie materiał do indeksacji. Przy nawigacji fasetowej Google ostrzega, że kombinacje parametrów mogą tworzyć ogromną liczbę URL-i, powodować nadmierne crawlowanie i spowalniać odkrywanie nowych, ważnych adresów.
Największy błąd to wiara, że canonical sam rozwiąże problem filtrów. Nie rozwiąże, jeżeli sklep generuje milion kombinacji, linkuje do każdej z nich i pozwala robotowi je odkrywać. Google podaje, że dla adresów fasetowych rel="canonical" może z czasem zmniejszyć crawl wolumen wersji niekanonicznych, ale jest mniej skuteczny długoterminowo niż blokowanie crawlowania niepotrzebnych wzorców lub stosowanie filtrów po fragmencie URL.
Dobra procedura wygląda tak:
- Zrób listę parametrów: sortowanie, kolor, rozmiar, marka, cena, dostępność, ocena, promocja.
- Podziel je na trzy grupy: indeksowalne, użytkowe, techniczne.
- Indeksowalne filtry zamień w czyste, opisane landing page’e z self-canonical.
- Użytkowe filtry zostaw dla klientów, ale nie buduj z nich masowej indeksacji.
- Techniczne parametry typu tracking, sesje, widok siatki/listy czy sortowanie odetnij od indeksacji lub crawlowania.
- Puste kombinacje zwracaj jako 404, jeśli faktycznie nie mają wyników i nie powinny istnieć jako strona. Google zaleca 404 dla kombinacji filtrów bez wyników, duplikatów filtrów, nonsensownych kombinacji i nieistniejących stron paginacji.
Nie ma jednej reguły dla każdego sklepu. Sklep z 300 produktami może bezpiecznie indeksować kilka filtrów. Marketplace z milionem ofert musi działać agresywniej: whitelista wartościowych kombinacji, blokada reszty, stały monitoring logów i raportów indeksowania.
Paginacja: dlaczego każda strona serii powinna mieć własny canonical
Przy paginacji najczęściej spotykany błąd wygląda tak:
/kategoria/
/kategoria/?page=2
/kategoria/?page=3
I na każdej z tych stron:
<link rel="canonical" href="https://example.com/kategoria/" />
Na papierze brzmi czysto: wszystkie strony serii wskazują stronę pierwszą. W praktyce to prośba o kłopoty. Strona druga, trzecia i czwarta nie są zwykłymi duplikatami strony pierwszej. Pokazują inne produkty, inne artykuły albo inne komentarze. Jeśli wszystkie wskażemy do pierwszej, wysyłamy sygnał, że dalsze strony nie są wersjami głównymi własnej treści.
Google zaleca odwrotnie: każda strona paginacji powinna mieć unikalny URL i własny canonical, a pierwsza strona serii nie powinna być canonicalem dla wszystkich kolejnych.
Poprawny schemat:
<!-- /kategoria/ -->
<link rel="canonical" href="https://example.com/kategoria/" />
<!-- /kategoria/?page=2 -->
<link rel="canonical" href="https://example.com/kategoria/?page=2" />
<!-- /kategoria/?page=3 -->
<link rel="canonical" href="https://example.com/kategoria/?page=3" />
Druga rzecz: paginacja musi być crawlable. Googlebot znajduje kolejne strony głównie przez linki w atrybucie href elementów <a>. Nie klika przycisków i zwykle nie wykonuje akcji użytkownika wymaganych do doładowania treści. Jeśli kolejne produkty pojawiają się wyłącznie po kliknięciu „Załaduj więcej”, bez adresów URL i linków HTML, część treści może być trudniejsza do odkrycia.
Dobre linkowanie paginacji:
<a href="https://example.com/kategoria/?page=2">2</a>
<a href="https://example.com/kategoria/?page=3">3</a>
<a href="https://example.com/kategoria/?page=2">Następna</a>
Zły trop:
/kategoria/#page=2
Google ignoruje fragmenty URL po # przy crawlowaniu i indeksowaniu w takim kontekście, więc numer strony zapisany po hashu nie jest dobrym rozwiązaniem dla paginacji.
Co z rel="next" i rel="prev"? Można je zostawić, jeśli już istnieją i nie robią bałaganu, ale nie należy opierać na nich strategii dla Google. Google podaje, że kiedyś używało tych znaczników do rozpoznawania relacji między stronami paginacji, ale już ich nie używa; inne wyszukiwarki nadal mogą z nich korzystać.
Najbezpieczniejsza kolejność działań przy paginacji:
- najpierw nadaj każdej stronie serii osobny URL;
- potem ustaw self-canonical na każdej stronie paginacji;
- następnie dodaj linki HTML do kolejnych stron;
- dopiero potem poprawiaj title, opisy, prefetch, szybkość i UX;
- na końcu sprawdź w Search Console, czy Google widzi kolejne strony jako osobne adresy, a nie jako duplikaty strony pierwszej.
Nie trzeba tworzyć unikalnego opisu SEO dla każdej strony paginacji. To często kończy się sztucznym tekstem typu „strona 2 kategorii butów sportowych”. Ważniejsze jest, żeby robot mógł przejść do kolejnych adresów i zobaczyć produkty. Google dopuszcza używanie tych samych tytułów i opisów w sekwencji paginacji, bo próbuje rozpoznawać takie serie i indeksować je odpowiednio.
FAQ: najczęstsze pytania o canonical przy sortowaniu, filtrowaniu i paginacji
Czy canonical blokuje indeksację strony?
Nie. Canonical jest sygnałem wyboru preferowanego adresu, a nie blokadą. Jeśli strona ma zostać usunięta z wyników, używa się noindex, ale strona musi być dostępna dla crawlera, żeby robot mógł ten znacznik zobaczyć.
Czy można ustawić canonical ze wszystkich stron paginacji na stronę pierwszą?
Nie powinno się tego robić. Przy paginacji każda strona serii powinna mieć własny adres kanoniczny. Strona druga i trzecia pokazują inną część listy, więc nie są prostą kopią strony pierwszej.
Co zrobić z adresem sortowania, np. ?sort=price?
Najczęściej wskazać canonical do czystej kategorii i nie indeksować wariantów sortowania. Sortowanie zmienia kolejność, ale zwykle nie tworzy nowej wartościowej strony SEO.
Które filtry warto indeksować?
Tylko te, które mają własną intencję wyszukiwania, stabilne wyniki, unikalny tytuł, sensowny H1, opis i linkowanie wewnętrzne. Reszta filtrów powinna zostać funkcją użytkową, a nie maszynką do produkcji URL-i.
Czy robots.txt nadaje się do canonicalizacji?
Nie. Google odradza używanie robots.txt jako metody canonicalizacji, bo zablokowany adres nadal może pojawić się w wynikach bez pobranej treści, jeśli prowadzą do niego linki. robots.txt służy raczej do ograniczania crawlowania wzorców URL, a nie do wskazywania wersji kanonicznej.
Czy łączyć noindex i canonical na tej samej stronie?
Nie traktowałbym tego jako domyślnego rozwiązania. Jeżeli chcesz skonsolidować podobne adresy, użyj canonical. Jeżeli chcesz usunąć adres z wyników, użyj noindex. Mieszanie sygnałów utrudnia diagnostykę, a przy dużych serwisach szybko robi się z tego bałagan.
Od czego zacząć naprawę istniejącego serwisu?
Najpierw sprawdź trzy rzeczy: canonical w kodzie HTML, URL-e generowane przez filtry i paginację oraz adresy w sitemapie. Jeżeli te trzy warstwy mówią co innego, napraw je przed analizą pozycji, ruchu i raportów duplikacji.

