Czym jest tag canonical?
Tag rel="canonical" – nazywany też linkiem kanonicznym lub tagiem canonical – to element HTML umieszczany w sekcji <head> strony. Jego zadaniem jest poinformowanie wyszukiwarek, który URL jest wersją kanoniczną (czyli główną, preferowaną) danej treści, gdy ta sama lub bardzo podobna zawartość jest dostępna pod kilkoma różnymi adresami.
Tag został wprowadzony w lutym 2009 roku wspólnie przez Google, Yahoo i Microsoft jako odpowiedź na powszechny problem duplikacji treści w internecie. Jego specyfikacja jest opisana w dokumencie RFC 6596 ("The Canonical Link Relation"), opublikowanym przez IETF.
<link rel="canonical" href="https://twojadomena.pl/przykladowa-strona/" />
Dlaczego duplikacja treści to problem?
Google nie lubi indeksować wielu stron z identyczną lub bardzo podobną zawartością. Gdy bot trafia na kilka adresów URL z tą samą treścią, staje przed dylematem: którą wersję pokazać w wynikach wyszukiwania? Skutki braku canonical mogą być poważne:
Rozmycie mocy SEO
Linki zewnętrzne prowadzące do różnych wersji tej samej strony nie kumulują się – ich siła jest rozdrobniona między kilka adresów. Żadna z wersji nie osiąga pełnego potencjału pozycjonowania.
Nieprawidłowy wybór Google
Google samodzielnie decyduje, którą wersję wyświetlić w wynikach. Może wybrać adres z parametrami sesji, wersję HTTP zamiast HTTPS albo adres z www zamiast bez – czyli coś, czego absolutnie nie chcesz.
Marnowanie crawl budget
Googlebot poświęca czas na indeksowanie wielu wersji tej samej treści zamiast odkrywać nowe, unikalne podstrony Twojej witryny. Na dużych serwisach to może oznaczać, że część stron w ogóle nie zostanie zindeksowana.
Niższe pozycje
Gdy sygnały SEO są rozdzielone między kilka adresów, każda z wersji jest słabsza niż mogłaby być. Konsolidacja tych sygnałów przez canonical potrafi zauważalnie poprawić widoczność w wyszukiwarce.
Self-canonical – canonical wskazujący na samą siebie
Self-canonical to sytuacja, w której tag canonical na danej stronie wskazuje na adres URL tej samej strony. Innymi słowy – strona mówi Google: "jestem kanoniczna sama w sobie".
<!-- Na stronie https://twojadomena.pl/oferta/ -->
<link rel="canonical" href="https://twojadomena.pl/oferta/" />
Dodawanie self-canonical na każdej stronie to dobra praktyka SEO, którą zaleca Google. Chroni przed przypadkowym zduplikowaniem adresu przez parametry URL (np. dodane przez systemy analityczne czy reklamy). Nawet jeśli Twoja strona nie ma problemu z duplikatami, self-canonical precyzyjnie informuje Google, jak chcesz, żeby wyglądał indeksowany URL – z trailing slash czy bez, z www czy bez.
Cross-domain canonical – canonical między domenami
Cross-domain canonical to użycie tagu canonical wskazującego na adres URL na innej domenie niż strona, na której tag jest umieszczony. Stosuje się go przede wszystkim przy syndykacji treści – gdy ten sam artykuł jest publikowany jednocześnie na kilku portalach.
<!-- Na stronie partnera: portal-xyz.pl/artykul/jak-dziala-seo/ -->
<link rel="canonical" href="https://twojadomena.pl/blog/jak-dziala-seo/" />
Dzięki temu Google wie, że oryginał pochodzi z Twojej domeny, i to Twoja strona powinna pojawiać się w wynikach wyszukiwania – nie wersja opublikowana na portalu partnerskim. Google obsługuje cross-domain canonical od 2009 roku i traktuje go jako silną wskazówkę przy wyborze kanonicznej wersji treści.
Canonical przez nagłówek HTTP
Oprócz tagu HTML, canonical można zadeklarować również przez nagłówek HTTP. Jest to przydatne zwłaszcza dla plików PDF, plików JSON czy innych zasobów, które nie mają sekcji <head>.
Link: <https://twojadomena.pl/raport-seo-2025.pdf>; rel="canonical"
W Apache (plik .htaccess) można to skonfigurować tak:
<FilesMatch "\.pdf$">
Header set Link '<https://twojadomena.pl/raport-seo-2025.pdf>; rel="canonical"'
</FilesMatch>
Gotowe kody do wdrożenia
Poniżej znajdziesz gotowe przykłady dla najczęstszych scenariuszy:
Podstawowy tag canonical w HTML
<head>
<link rel="canonical" href="https://twojadomena.pl/strona/" />
</head>
Canonical dla strony z parametrami URL
Strona /produkty/?sort=cena&page=2 wskazuje na główną stronę kategorii:
<link rel="canonical" href="https://twojadomena.pl/produkty/" />
Canonical dla produktu w wielu kategoriach (WooCommerce / sklep)
Produkt dostępny pod dwoma adresami:
<!-- https://sklep.pl/elektronika/telefony/samsung-galaxy/ -->
<!-- https://sklep.pl/promocje/samsung-galaxy/ -->
<!-- Na obu stronach umieszczamy jeden canonical: -->
<link rel="canonical" href="https://sklep.pl/elektronika/telefony/samsung-galaxy/" />
Canonical w WordPress (functions.php)
WordPress od wersji 4.4 dodaje self-canonical automatycznie przez funkcję wp_head(). Jeśli chcesz nadpisać canonical dla konkretnego wpisu:
add_action('wp_head', function() {
if (is_single() && get_the_ID() === 123) {
echo '<link rel="canonical" href="https://twojadomena.pl/wlasciwy-url/" />';
}
}, 1);
Canonical dla wersji drukowanej strony
<!-- Na stronie /artykul/?print=1 -->
<link rel="canonical" href="https://twojadomena.pl/artykul/" />
Canonical a przekierowanie 301 – co wybrać?
Tag canonical
Wskazówka dla wyszukiwarek – strona pod oryginalnym adresem nadal jest dostępna dla użytkowników. Google może (choć nie musi) zignorować canonical. Stosuj, gdy chcesz zachować dostępność obu wersji URL lub nie możesz wprowadzić przekierowania po stronie serwera.
Przekierowanie 301
Twarda reguła – użytkownik i bot są automatycznie przenoszeni na nowy adres. Stary URL przestaje być dostępny. Stosuj, gdy chcesz trwale zmienić adres strony lub wyeliminować duplikaty bez wyjątków. Bardziej skuteczne niż canonical przy konsolidacji domen.
Najczęstsze błędy przy implementacji canonical
- Względny zamiast absolutnego URL – canonical zawsze powinien zawierać pełny adres z protokołem (
https://). Zapishref="/strona/"jest formalnie obsługiwany przez Google, ale pełny URL jest bezpieczniejszy i jednoznaczny. - Kilka tagów canonical na jednej stronie – jeśli w
<head>pojawi się więcej niż jeden tag canonical, Google zignoruje oba. Upewnij się, że w kodzie źródłowym strony jest dokładnie jeden. - Canonical w
<body>zamiast<head>– tag umieszczony poza sekcją<head>może być zignorowany przez Google. - Sprzeczne sygnały – canonical wskazuje jeden URL, a linki wewnętrzne i sitemap.xml prowadzą do innego. Google może się wtedy zdezorientować i zignorować canonical.
- Canonical na stronach z noindex – połączenie
noindexz canonical wskazującym na inną stronę to sprzeczność. Jeśli strona ma być nieindeksowana, nie potrzebuje canonical wskazującego na zewnątrz. - Łańcuchy canonicali – strona A wskazuje canonical na stronę B, a strona B na stronę C. Google obsługuje takie łańcuchy, ale zaleca bezpośrednie wskazanie docelowego URL na każdej stronie.