Kanonická adresa: nejtišší způsob, jak vypnout půlku webu

Kanonická adresa říká vyhledávači, která z několika adres se stejným obsahem je ta hlavní. Když ukazuje špatným směrem, Google během pár týdnů vyhodí z indexu zbytek webu a vy o tom nevíte: stránky se načítají, server nehlásí chybu, jen návštěvnost z vyhledávání pomalu klesá. Stačí jeden řádek v šabloně.

Co kanonická adresa zvládne a co po ní chtít nemůžete?

Slučuje signály. Když leží tentýž článek na třech adresách, každá z nich posbírá kus odkazů a kus historie, ale ani jedna nemá dost na to, aby se dostala nahoru. Kanonická adresa řekne, že adres je víc, stránka je jedna a všechno se má připsat té určené.

Nepřesměrovává. Kdo otevře nekanonickou adresu, uvidí přesně tu stránku, na kterou klikl. Nezakazuje procházení, robot na nekanonickou adresu chodí dál. A nezaručuje, že se ve výsledcích objeví právě ta adresa, kterou jste určili.

Přesměrování 301 je rozkaz, kanonická adresa návrh. Když má stará adresa opravdu zmizet, patří tam trvalé přesměrování 301, ne canonical.

Proč Google váš canonical občas ignoruje?

Bere ho jako jeden signál z několika a porovnává ho s interním prolinkováním, s adresami v XML sitemapě, s přesměrováními, s hreflangem. Když si signály odporují, rozhodne se sám. V Search Console to máte černé na bílém: nástroj Kontrola adresy URL ukazuje dva řádky, „Kanonická adresa URL uvedená uživatelem“ a „Kanonická adresa URL vybraná Googlem“. Liší se? Váš návrh neprošel.

Důvody bývají dva. Buď se stránky od sebe liší natolik, že je Google za duplicitu nepovažuje, nebo posíláte signál na variantu, která je chudší než ta původní: má míň textu a míň odkazů. U Seznamu se to dohledává hůř. Jeho robot canonical podle mých zkušeností respektuje, ale veřejná dokumentace k tomu, jak se rozhoduje při konfliktu signálů, prakticky neexistuje. Kdo vám nadiktuje přesná pravidla, hádá.

Výchozí stav je odkaz sám na sebe

Každá stránka, která má být v indexu, si v hlavičce ukazuje na vlastní adresu:

<link rel="canonical" href="https://www.vasedomena.cz/kategorie/produkt/" />

  • Adresa je absolutní, včetně protokolu a domény. Relativní zápis Google zvládne, ale sám ho nedoporučuje, protože se rozbije při první změně šablony.
  • Na stránce je právě jeden takový řádek a patří do sekce <head>. Dva různé canonicaly znamenají, že Google ignoruje oba.
  • Sedět musí i detaily: lomítko na konci, malá písmena, www nebo bez www, https. Držte jeden tvar podle pravidel pro strukturu URL adres.
  • Cílová adresa musí vracet stavový kód 200. Canonical mířící na 404 nebo na přesměrování se zahodí.

Ve WordPressu i na Shoptetu to takhle funguje z výroby. Rozbije se to až ve chvíli, kdy do toho někdo sáhne.

Tři nastavení, po kterých web tiše zmizí

Všechna tři jsem u klientů viděl opakovaně a ani jedno nevzniklo naschvál.

Chyba Odkud se bere Co udělá
Canonical na úvodní stránku ze všech podstránek Úprava v šabloně, kde se do atributu href dostane odkaz na domovskou stránku, nebo plugin s natvrdo zadanou hodnotou Google postupně vyřadí z indexu všechny podstránky. Web se ve výsledcích scvrkne na jednu adresu.
Canonical na testovací doménu Web se překlápěl z adresy typu test.domena.cz nebo z dočasné domény u Wedosu a canonical zůstal starý Signály míří na doménu, kterou nikdo nezná a která bývá za heslem. Ostrý web se chová jako kopie.
Canonical na http verzi Po nasazení certifikátu se přepsala přesměrování, ale ne šablona nebo natvrdo uložená adresa v databázi Robot dostává protichůdné pokyny. Přesměrování ho žene na https, canonical zpátky na http.

Kdy si toho všimnete, závisí na tom, jak často k vám robot chodí. U webu s pár stovkami adres se to naplno projeví zhruba za tři až osm týdnů. U e-shopu s desítkami tisíc adres to bývá pomalejší a o to zákeřnější, protože pokles vypadá jako sezónnost. Návrat po opravě trvá stejně dlouho, někdy déle. Třetí případ hlídejte hlavně při práci s certifikátem, souvislosti popisuje článek o https a jeho vlivu na SEO.

Co s parametry z reklamy a s filtry v e-shopu?

Sklik připojuje k cílové adrese identifikátor kliknutí sznclid, Google Ads gclid, Facebook fbclid, k tomu si obvykle přidáváte vlastní utm_source a další. Každá taková adresa je pro robota nová stránka se stejným obsahem. Když má šablona poctivý canonical na čistou adresu, nestane se nic. Když ho nemá, začnou se v Search Console vršit stovky adres s otazníkem a robot tráví čas jejich procházením místo toho, aby si došel pro nové produkty.

  • Měřicí parametry (gclid, sznclid, utm_*, fbclid): canonical na čistou adresu bez parametrů. Obsah je totožný, Google to bere skoro vždy.
  • Řazení a počet položek na stránku (?razeni=nejlevnejsi): totéž, canonical na výchozí variantu kategorie.
  • Filtry, které mění nabídku zboží: rozhodněte se, jestli je chcete v indexu. „Dámské zimní boty“ hledá dost lidí na to, aby ta stránka existovala jako samostatná kategorie s vlastním popisem. „Dámské zimní boty modré velikost 39 do 2 000 Kč“ ne.
  • Vyhledávání na webu (?s= ve WordPressu): tyhle adresy do indexu nepatří vůbec, tady je na místě noindex.

Jedna věc se podceňuje často. Canonical z odfiltrované stránky na hlavní kategorii je z pohledu Googlu odkaz mezi dvěma různými výpisy zboží, takže ho klidně ignoruje a filtrovanou adresu si zaindexuje po svém. U kombinací, které v hledání nechcete nikdy, je spolehlivější sáhnout po noindexu nebo omezit procházení. Další zdroje duplicit rozebírá text o duplicitním obsahu na českých webech.

Proč se canonical a noindex nemají potkat na jedné stránce?

Protože si odporují. Noindex říká „tuhle stránku vůbec neindexuj“, canonical říká „indexuj místo ní tamtu a připiš jí signály“. Google tuhle kombinaci nedoporučuje a jeho zástupci opakovaně varovali, že si obě adresy může sloučit a pak vyhodnotit noindex jako platný i pro cílovou stránku. Jestli k tomu dojde pokaždé, netuším a zvenčí to nikdo spolehlivě neověří. Riziko je ale zbytečné.

Vyberte si jedno. Chcete adresu úplně mimo hledání? Noindex, žádný canonical na cizí stránku. Chcete slučovat sílu? Canonical, žádný noindex. Totéž platí pro kombinaci canonical a zákaz v souboru robots.txt: zakázanou stránku si robot nestáhne, takže se o vašem canonicalu nikdy nedozví.

Hreflang a stránkování hrají podle jiných pravidel

Každá jazyková verze má kanonickou adresu sama na sebe. Slovenská na slovenskou, německá na německou. Klasická chyba na WordPressu s překladovým pluginem: všechny mutace mají canonical na českou verzi, čímž se cizojazyčné stránky samy odhlásí z indexu a hreflang přestane dávat smysl. Podrobněji v článku o vícejazyčném webu a hreflangu.

Stránkování je druhý evergreen. Druhá stránka výpisu má canonical na druhou stránku výpisu, ne na první. Když ji schováte pod jedničku, říkáte tím, že zboží dostupné až na páté straně je duplicita. A ono zmizí. Značky rel="next"rel="prev" Google od roku 2019 nepoužívá, sám to tehdy oznámil. Jak s výpisy pracovat dnes, řeší text o stránkování a SEO.

Jak to řeší Yoast, Rank Math a Shoptet?

Ve WordPressu s Yoastem najdete pole „Kanonická adresa URL“ v postranním panelu editoru na kartě Pokročilé. Prázdné pole znamená odkaz sám na sebe, tedy správný výchozí stav. Rank Math to má stejně, karta Pokročilé v boxu Rank Math SEO. Vyplněná hodnota přebije všechno ostatní.

Kde to nejčastěji hoří:

  1. Dva SEO pluginy naráz, nebo SEO plugin a šablona, která si přidává vlastní canonical. Výsledkem jsou dva řádky v hlavičce.
  2. Hromadný import produktů nebo článků, kde sloupec s kanonickou adresou obsahuje jednu hodnotu pro všechny řádky.
  3. Migrace z jiného webu, kdy se přenesou i stará metadata včetně natvrdo uložených adres.
  4. Úprava přes filtr wpseo_canonical, respektive rank_math/frontend/canonical, kterou před dvěma lety psal někdo jiný a nikdo neví proč.

Shoptet generuje kanonické adresy sám a běžný obchodník na ně v administraci nesahá. Platforma za vás řeší varianty s řazením i s parametry filtrů; když chcete mít filtrovanou stránku v indexu jako plnohodnotnou kategorii, používají se parametrické kategorie. Mezi verzemi šablon se ale chování mění, takže si po každém větším upgradu otevřete zdrojový kód a podívejte se, co tam skutečně je. Upgates na tom je podobně. Ruční zásah vlastním kódem v hlavičce doporučuji až jako poslední možnost, protože pak canonical snadno skončí v hlavičce dvakrát.

Kontrola kanonických adres zabere deset minut

  1. Otevřete zdrojový kód (Ctrl+U) na sedmi typech stránek: úvodní, článek, produkt, kategorie, odfiltrovaná kategorie, druhá stránka výpisu a libovolná adresa s dopsaným ?gclid=test. Hledejte řetězec „canonical“.
  2. Porovnejte. Prvních šest má ukazovat samo na sebe, sedmá na čistou adresu bez parametru.
  3. Tytéž adresy prožeňte nástrojem Kontrola adresy URL v Search Console a porovnejte řádky s uvedenou a vybranou kanonickou adresou.
  4. Projděte celý web crawlerem. Bezplatná verze Screaming Frogu zvládne 500 adres, což na většinu firemních webů stačí. U e-shopu už budete potřebovat placenou licenci za zhruba sedm tisíc korun ročně nebo jiný nástroj.
  5. Rychlý přehled dá i bezplatná SEO kontrola webu, která na zadaných adresách vypíše kanonické odkazy a upozorní na ty, které míří jinam než na sebe.

Zařaďte si tuhle kontrolu do rutiny pokaždé, když se web stěhuje, mění šablonu, nasazuje certifikát nebo přidává SEO plugin. Pět minut práce ušetří měsíce čekání, než se index srovná zpátky. Jak canonical zapadá mezi ostatní technické signály, shrnují základy technického SEO.

Časté dotazy

Co se stane, když má stránka dvě kanonické adresy?

Google obě ignoruje a rozhodne se sám, kterou adresu bude považovat za hlavní. Nejčastěji to vzniká souběhem SEO pluginu a šablony, která si přidává vlastní řádek. Zkontrolujte zdrojový kód a nechte v hlavičce jediný link rel="canonical".

Pomůže canonical proti tomu, když mi obsah zkopíruje cizí web?

Přímo ne. Kanonickou adresu musí do své stránky vložit ten druhý web, vy ji na cizí doméně nastavit nemůžete. U domluvené spolupráce, třeba při přebírání článků, o to partnera požádejte. U krádeže obsahu zbývá výzva k odstranění nebo stížnost na porušení autorských práv.

Jak dlouho trvá, než se změna kanonické adresy projeví?

Robot musí stránku znovu stáhnout a vyhodnotit, takže od několika dní po několik týdnů podle toho, jak často k vám chodí. U důležitých adres proces urychlíte požadavkem na indexaci v Search Console. Termín nikdo negarantuje, u větších webů počítejte spíš s měsíci než se dny.

Jakub Knytl

Patnáct let opravuji weby českým firmám a e-shopům. Většina problémů, o kterých tu píšu, mě potkala u klienta dřív, než jsem o nich napsal.

Související návody

Aby vás vyhledávače našly

JavaScript a SEO: kdy robot obsah uvidí a kdy ne

Google JavaScript spustí, ale s odkladem a ne vždycky. Seznam s ním pracuje omezeně. Obsah, na kterém závisí návštěvnost, patří do HTML.

· 4 min čtení

Pojmy z tohoto textu

Nevíte, jestli se vás to týká?

Pusťte kontrolu na svůj web a uvidíte, jestli tenhle problém máte. Trvá to necelou minutu.

156 kontrol, výsledek do minuty. Bez registrace, bez karty, bez e-mailu.