Co to jest Canonical (rel=canonical) w WordPress?
Jeśli masz w Google Search Console wrażenie, że Twoja jedna podstrona „rozmnaża się” na dziesiątki wariantów URL (parametry, sortowanie, filtry, UTM-y, czasem dziwne ścieżki z końcówkami i różnymi wersjami adresu), to Canonical jest dokładnie tym mechanizmem, który pozwala Ci odzyskać kontrolę i powiedzieć robotom: „to jest wariant; indeksuj tę konkretną wersję jako główną”. I teraz ważne: canonical nie usuwa duplikatów z internetu. To raczej informacja dla robotów indeksujących w stylu „jeśli trafiłeś tu przypadkiem, właściwe wejście jest obok”. A Google może tę informację przyjąć albo – jeśli sygnały są sprzeczne – zignorować.
- Co to jest, co dokładnie robi canonical i jak działa?
- Canonical ≠ przekierowanie 301. Kiedy co stosować?
- Najczęstsze sytuacje, w których canonical w WordPress odgrywa kluczową rolę
- Kotwice, „dziwne URL-e” typu /wpis/#1, feed itp. w GSC
- „Self-referencing canonical” – co to znaczy?
- Jak to skonfigurować canonical w WordPress?
- Najczęstsze błędy, przez które Google ignoruje canonical
- Podsumowanie: canonical jako narzędzie kontroli
Co to jest, co dokładnie robi canonical i jak działa?
Tag canonical to linia w sekcji strony, która wskazuje URL preferowany. Minimalny zapis wygląda tak:
W praktyce canonical jest potrzebny wtedy, gdy ta sama zawartość (albo niemal ta sama) może być dostępna pod różnymi adresami – co w WordPressie, WooCommerce i przy filtrowaniu zdarza się naturalnie. Przykład, który najczęściej podajemy w rozmowach z klientam, jest podręcznikowy:
- wariant z parametrem:
/buty/?sort=price - wersja bazowa:
/buty/
W takim układzie canonical powinien wskazywać na wersję bazową, żeby sygnały (linki, relevancja, wewnętrzne podpięcia) nie rozchodziły się na dziesiątki adresów, które różnią się tylko parametrem sortowania.
Canonical ≠ przekierowanie 301. Kiedy co stosować?
To jedno z najważniejszych rozróżnień, bo właśnie tu początkujący w SEO użytkownicy najczęściej robią bałagan. Canonical stosujesz, gdy:
- warianty URL muszą istnieć, bo użytkownicy z nich korzystają (np. sortowanie, filtry, parametry kampanii),
- chcesz, żeby Google traktował te warianty jako „odmiany” jednej strony,
- nie chcesz, aby każdy wariant walczył o indeks i pozycje osobno.
Natomiast przekierowanie 301 stosujesz, gdy:
- jedna z wersji adresu nie ma prawa istnieć jako osobna strona (http → https, www → bez www, stare slugi → nowe slugi),
- nie chcesz, aby wariant był dostępny nawet dla użytkownika (albo chcesz go natychmiast kanonicznie „zwinąć” do jednej wersji).
W skrócie: canonical porządkuje indeksację, a 301 porządkuje samą dostępność adresów.
Najczęstsze sytuacje, w których canonical w WordPress odgrywa kluczową rolę
Pewnie przykładów można by mnożyć w zależności od stopnia, w jakim zależy nam na uzyskaniu określonych wyników, lub rozwiązania konkretnych problemów z indeksowaniem. My wryóżniliśmy trzy takie sytuacje, do których z jednej strony nie powinieneś dopuścić, z drugiej, które wymagają najczęściej naprawy:
Parametry w URL (sortowanie, filtry, wyszukiwarka)
To najczęstsza techniczna przyczyna duplikacji w WooCommerce i serwisach z filtrowaniem.
Jeśli listing kategorii może występować jako:
/buty-biegowe/
/buty-biegowe/?sort=price_asc
/buty-biegowe/?color=red
…to bez jasno ustawionego canonical sklep potrafi wygenerować setki lub tysiące „prawie takich samych” stron, które rozcieńczają sygnały i marnują budżet crawlowania.
UTM-y i parametry kampanii
Jeśli do tej samej strony docierasz przez linki w reklamach:
/landing/?utm_source=facebook&utm_campaign=styczen
…to canonical (zwykle do wersji bez parametrów) chroni Cię przed sytuacją, w której Google zacznie traktować te kampanijne warianty jako osobne adresy, które „warto” indeksować.
Wersje domeny (http/https, www/non-www)
Tu canonical bywa używany, ale praktycznie zawsze ważniejsze są przekierowania 301 na poziomie serwera. Canonical może sygnalizować preferencję, lecz jeśli serwer pozwala na kilka wersji domeny, to problem wraca jak bumerang.
Archiwa WordPressa (tagi, autor, data) i strony listujące
Archiwa są naturalnym źródłem podobnych stron. Canonical potrafi pomóc, ale często lepszą decyzją jest… świadome zarządzanie indeksacją (np. noindex dla archiwów, które nie mają wartości), a canonical traktować jako warstwę wspierającą.
Kotwice, „dziwne URL-e” typu /wpis/#1, feed itp. w GSC
To temat, który przewija się w GSC i potrafi wyglądać groźnie, mimo że technicznie jest bardziej „hałasem” niż realnym duplicate content. Przykładowo kotwica (fragment) po znaku #:
- nie jest wysyłana do serwera (to część obsługi po stronie przeglądarki),
- zazwyczaj nie tworzy „nowej” strony, tylko przewija użytkownika do konkretnego miejsca.
Dlatego w klasycznym scenariuszu:
- canonical ustawiasz na normalny URL wpisu (bez
#), - a linki z kotwicami traktujesz jak nawigację po tej samej stronie.
Kiedy to zaczyna być problemem? Gdy na stronie działa routing oparty o hash (np. stare rozwiązania typu #!/), albo gdy filtracja / przełączanie widoków jest robione wyłącznie po stronie JS w taki sposób, że Google może widzieć „oddzielne” stany aplikacji jako różne URL-e. Wtedy potrzebujesz już audytu: jak robot widzi te stany, czy generują osobne adresy, czy generują osobne treści, i czy nie trzeba przejść na rozwiązanie oparte o normalne ścieżki URL.
„Self-referencing canonical” – co to znaczy?
Self-referencing canonical to po prostu canonical wskazujący na ten sam adres, pod którym strona jest aktualnie dostępna.
dla /wpis/ canonical = /wpis/
dla /buty/ canonical = /buty/
To jest domyślny, zdrowy standard, bo:
- stabilizuje sygnały,
- pomaga przy drobnych wariantach adresów,
- ułatwia Google wybór wersji preferowanej.
Wtyczki SEO (Yoast, RankMath i podobne) zazwyczaj ustawiają to automatycznie, ale przy niestandardowych filtrach (zwłaszcza JS) warto to weryfikować ręcznie.
Jak to skonfigurować canonical w WordPress?
Jeśli dostrzegasz potrzebę uregulowania adresów URL kierujących do tych samych stron, to możesz to zrobić łatwo za pomocą kilku wtyczek lub, możesz to zrobić przez edycję kodu. To drugie rozwiązanie oczywiście wymaga już od Ciebie pewnej wiedzy, ale z drugiej strony, masz np. wtyczkę Yoast SEO lub Rankmath, z których i tak będziesz korzystał przy SEO, więc możesz użyć ich także do zmiany adresu kanonicznego.
Opcja 1: wtyczka SEO (najczęściej najrozsądniejsza w WordPressie)
Jeśli masz Yoast / RankMath, to:
- canonical dla wpisów i stron jest generowany automatycznie,
- często masz też możliwość ręcznego ustawienia canonical na poziomie konkretnej podstrony (gdy potrzebujesz wyjątku).
To podejście jest praktyczne, bo nie wymaga dłubania w motywie i jest przewidywalne po aktualizacjach.
Opcja 2: ręczne ustawienia canonical w kodzie WordPress
WordPress sam z siebie nie daje wygodnego panelu do zarządzania canonical. Możesz to jednak zrobić bez Yoasta, jeśli wiesz, gdzie wpiąć kod. Najbezpieczniej w małej wtyczce typu „site plugin” (a nie w motywie), żeby po zmianie motywu logika nie zniknęła.
W praktyce sprowadza się to do wygenerowania w wp_head własnego taga canonical dla konkretnych warunków (np. gdy wykryjesz parametr sortowania, ustawisz canonical na URL bez parametrów). I tu pojawia się kluczowy haczyk: to nie jest jeden uniwersalny snippet, bo przy filtrach możesz chcieć dwóch różnych zachowań:
- canonical na bazę (gdy filtry nie mają wartości SEO),
- albo pozostawienie stron filtrowanych jako indeksowalnych (gdy budujesz „landing pages” pod konkretne kombinacje).
Jeśli zaczniesz z automatu kanonikalizować wszystko do wersji bazowej, bardzo łatwo przypadkiem utniesz widoczność list, które mogłyby rankować.
Najczęstsze błędy, przez które Google ignoruje canonical
Tak jak wspomnieliśmy wyżej. Nawet kiedy ustawisz canonical, adres kanoniczny, nie jest pewne, jak zareaguje na to, np. Google. Bo jeżeli w GSC widzisz „Google wybrał inną stronę kanoniczną niż użytkownik”, to zwykle winny jest jeden z tych punktów:
- canonical wskazuje na URL, który zwraca 3xx/4xx/5xx,
- canonical wskazuje na stronę, która nie jest faktycznie „najbardziej zgodna” treściowo,
- sitemap zawiera inne URL-e niż te, które canonical promuje,
- linkowanie wewnętrzne prowadzi masowo do wariantów (np. z parametrami),
- brak spójnych 301 dla wersji domeny (http/https, www),
- przypadkowe generowanie kilku canonical (konflikt wtyczek).
Podsumowanie: canonical jako narzędzie kontroli
Canonical ma jeden cel: sprawić, żeby Google wiedział, który URL jest główny, gdy system (WordPress, WooCommerce, filtry, parametry kampanii) generuje wiele wariantów tej samej treści. Jeśli masz w GSC „dziwne” adresy powiązane z jedną bazową stroną, to w pierwszej kolejności patrzysz na spójność sygnałów: canonical, 301, mapa strony, linkowanie wewnętrzne i indeksację stron technicznych. A jeżeli chcesz to robić konsekwentnie, bez walki z wydajnością i bez sytuacji, w której reguły przekierowań i nagłówków działają raz lepiej, raz gorzej, to baza po stronie hostingu ma znaczenie bardziej, niż wiele osób chce przyznać.
Przetestuj bezpłatnie i zarejestruj niezawodny hosting pod CMS WordPress w SEOHOST – stabilne środowisko ułatwia utrzymanie porządku w URL-ach, przekierowaniach i sygnałach indeksacji, a to jest dokładnie ta warstwa, na której canonical ma działać przewidywalnie.