Přirozené duplicity a kanonizace

Jeden a ten samý obsah na různých URL -- tedy duplicita -- je principiálně špatná věc, to už jsem vysvětloval. Některým duplicitám se ale vyhnout nedá, jsou to přirozené duplicity.

Přirozené duplicity - Kanonizace - Link rel="canonical" - Alternativní způsoby nastavení kanonického linku - Ignorované parametry v Google webmaster tools - Povídání o slově kanonizace - Nějaké závěry o přirozených duplicitách

Tato stránka je teoretičtější. Bude-li vás nudit, přeskočte ji. Hledáte-li jen zápis kanonického linku, tady je příklad:

<link rel="canonical" href="https://www.example.com/kanonicka-stranka.html">

Přírozené duplicity

Přirozenou duplicitou označuji stav, kdy se na různých adresách vyskytuje stejný obsah, aniž by to autor nějak "zavinil".

Nepřirozené duplicity

Nepřirozená duplicita nevznikne sama. K jejímu vzniku je potřeba buďto neznalost nebo zlý záměr autora webu.

  1. Různé domény se stejným obsahem jsou prvním příkladem nepřirozené duplicity. Takovým dvěma duplicitním webům se říká aliasy. Dost často aliasy páchají komerční firmy na různých variantách doménového jména. Seženou domény s cz, com, net a info a na všechny nahrají stejný obsah (nebo to udělají v nastavení serveru). Taková situace je principiálně špatná. Nejlepším řešením aliasů je zvolit, která doména bude hlavní, a všechny ostatní domény na ni přesměrovat.
  2. Jiným příkladem nepřirozené duplicity jsou okopírované stránky, jak stojí a leží, nakopírované na jinou adresu. Když se něco takového objeví v rámci jedné domény, jsou vyhledávače benevolentnější a občas to kanonizují jako přirozenou duplicitu. Když je taková duplicita napříč různými doménami, tak je trochu zle, pak jedna z těchto stránek vypadne (většinou vypadne ta mladší nebo méně odkazovaná -- problém je, když je mladší stránka odkazovanější, pak těžko říct).
  3. Masivní mirrory jsou většinou vzdálené proxyny, které po webu kradou obsah a dávají si ho k sobě na svou doménu v obrovském množství. Vyhledávače je většinou penalizují vyřazením z indexu, když na ně přijdou. Většinou problém nezpůsobí, protože jejich kopie jsou mladší a méně odkazované. Obsah opět je na jiné doméně.

Možná jste si všimli, že nepřirozená duplicita je vždycky na více doménách. Oproti tomu přirozená duplicita se vyskytuje na téže doméně.

Kanonizace

Různé vyhledávače se s přirozenými duplicitami vyrovnávají různě. Používají na to soubor algoritmů obecně nazývaných kanonizace. V Googlu se kanonizuje jinak než v Seznamu nebo v Bingu. Téměř vždy jde o proces automatizovaný. Kanonizace se povede zejména v případě přirozených duplicit (z jedné domény) a většinou se nepovede u nepřirozených duplicit (tedy těch, které jsou přes víc domén).

V Googlu probíhá kanonizace pravděpodobně takto:

  1. když Google zjistí, že je na stejných URL, které odpovídají případu přirozených duplicit, dlouhodobě zcela stejný obsah, udělá z nich kanonickou množinu.
  2. Z ní nějakým algoritmem vybere jednoho zástupce (tedy kanonickou stránku).
  3. Tohoto zástupce potom ukazuje ve výsledcích vyhledávání.
  4. Podstatné je, že ve prospěch tohoto zástupce počítá všechny zpětné odkazy, které míří na libovolný prvek kanonické množiny.

Jestliže mám tedy například stránku kreta.rovnou.cz/index.html a míří na ni nějaký odkaz, Google tento odkaz započítá pro URL kreta.rovnou.cz/, které chápe jako zástupce kanonické množiny. Stejně tak do této množiny patří i URL www.kreta.rovnou.cz (bez lomítka na konci).

Pokud jde o URL s přidáním nějakého parametru za otazníkem, který nemění obsah stránky, nevím, jak se k němu Google chová a jestli jej zahrne do kanonické množiny. Zdá se mi, že spíše ano, ale spíše jen u známých parametrů typu &phpsessid= apod. Do kanonické množiny padají i aliasové subdomény jedné domény. Pokud Google zvolil za zástupce kanonické množiny špatný doménový alias, lze mu domluvit vevnitř v Google Search Consoli (Preferred domain). V Google Search Consoli se dají také nastavit ignorované parametry URL (probírám níže).

V Seznamu se kanonické linky respektují od roku 2012. V roce 2018 nasazuje zcela nová kanonizace, která to bude dělat ještě lépe. Ještě dříve (před rokem 2012) se kanonizovalo trochu primitivněji a říkalo se tomu interně normalizace. Některá vyvolená jména souborů (například index.html, index.php) jsou považována za názvy startovních souborů adresářů. Pokud se mezi novými odkazy najde URL, které se od nějakého známého URL liší pouze tímto jménem souboru, považuje se tento odkaz na novou adresu za odkaz na tu známou adresu. Stejně tak pokud se najde varianta URL bez www a s www, vezme se jedna z nich a druhá se považuje za její kanonický obraz. V případě zbytečných parametrů je situace trochu složitější. Pokud přijde první URL s nějakým parametrem, o němž je známo, že je zbytečný (phpsessid), tak se URL zaindexuje i s tímto parametrem (občas bez něj stránka nefunguje), ale každé další nové URL, které se bude lišit jen tímto parametrem, se považuje za kanonický obraz. Když přijde URL s novým zbytečným parametrem, o němž robot neví, že je zbytečný, tak adresu založí jako novou. Většinou pak adresa neprojde filtrem duplicit (to už nepatří do kanonizace) každopádně vliv odkazu se ztratí.

Slovníček

Význam můj název googlí název anglicky googláci překládají jako
více stránek se stejným obsahem kanonická množina canonical set sada
stránka z množiny stejných, která bude ve výsledcích vyhledávání zástupce kanonické množiny canonical version, canonical page kanonická verze, kanonická stránka
proces hledání podobností a jejich zástupců kanonizace canonisation kanonizace

Link rel="canonical"

Relativní novinka (psáno v únoru 2009, aktualizace 2010) zavádí možnost říct vyhledávačům přímo v HTML kódu, který zástupce z kanonické množiny má být považován za vyvoleného zástupce. Zápis tagu v hlavičce html stránky je například tento:

<link rel="canonical" href="https://www.jakpsatweb.cz/">

Tento zápis říká vyhledávači, že

Google zpočátku doporučoval, že by se takový link měl používat pouze v rámci jedné domény (L2 domény). To dává smysl, pokud tím chtěl řešit primárně přirozené duplicity. Potom to ale odvolal a od roku 2010 se běžně používá kanonizace napříč doménami.

Dále Google doporučoval, že se obsahy musí navzájem velmi podobat.

Za href se může použít relativní i absolutní adresa.

Příklad použití link rel="canonical"

Třeba výpis diskuse. Normálně se řadí podle data. Ale když nějaký odkaz vede na seřazení podle názvu tématu, tak by si vyhledávač zařadil do databáze v podstatě tutéž stránku, jenom jinak seřazenou. Obě stránky by zvlášť sbíraly rank i odkazy, takže by spolu v podstatě soupeřily, místo aby si pomáhaly. Pokud na stránku řazenou podle tématu umístím kanonický link mířící na stránku řazenou podle data (což je ta, kterou chci, aby vyhledávač indexoval), tak vyhledávač bude indexovat jenom tu jednu a odkazy vedoucí na druhou bude počítat ve prospěch té první.

Dalším příkladem jsou různé termíny jednoho zájezdu, kterých bývá strašně moc. Jednotlivé stránky se liší pouze datem a cenou, tedy velmi málo. Tam je také dobré je spojit do jedné kanonické množiny.

Nebo když mám shop a prodávám mobily v různých barvách. Na všech je stejný text a liší se jen barvou. Ani tak mi nezáleží na tom, aby uživatel našel modrý mobil, spíš bych byl rád, kdyby našel hlavní stránku daného mobilu. V tom případě se na všechny stránky barevných variant vyplatí dát kanonický link vedoucí na hlavní stránku mobilu.

Mám tedy velmi podobné stránky, které chci spojit do kanonické množiny:

uzasny-mobil.php
uzasny-mobil.php?barva=vsechny
uzasny-mobil.php?barva=cervena
uzasny-mobil.php?barva=modra
uzasny-mobil.php?barva=zelena

a rozhodnu se, že zástupce kanonické množiny bude

uzasny-mobil.php?barva=vsechny

Na všechny tyto stránky tedy umístím kanonický link na to, co chci, aby byl zástupce kanonické množiny:

<link rel="canonical" href="uzasny-mobil.php?barva=vsechny">

(Samozřejmě je potřeba zkontrolovat cestu.). Vyhledávač potom bude uživatele posílat jenom na stránku, která je zástupcem kanonické množiny, a bude pro ni sčítat rank všech jednotlivých stránek množiny.

Dotazy o kanonickém linku

Dotaz: můžu namířit kanonický link na tutéž stránku, na které ten link je?
Odpověď: ano. Proč se to hodí: protože programátoři jsou líní podmínkovat, jestli náhodou nejsou na té hlavní stránce. Takže podmínkovat nemusejí.
Jak moc se musejí obsahy podobat?
To není nikde (pokud vím) specifikováno. Předpoklad je, že když se budou podobat "moc", tak bude link ignorován.
Mohou v sitemapě pro roboty být uváděny stránky, které nejsou zástupci své kanonické množiny?
Mohou, ale není to moc dobrý nápad. Přítomnost v sitemapě je signálem, že URL je spíše kaninická.
Tyhle věci s podobnostmi se přece často řeší přesměrováním. Je tedy lepší kanonický link?
Přesměrování je lepší tam, kde je obsah zcela totožný a nevadí, že se uživatel dostane na jinou URL. Kanonický link se hodí tam, kde jsou obsahy velmi podobné, ale přece se v nějakém detailu liší.
Co když uvedu link na stránku, která neexistuje?
Vyhledávač by v takovém případě měl kanonický link ignorovat. Například Google uvádí, že se pak pokusí stránku kanonizovat přirozeně. Jiné vyhledávače by se s tím také měly poprat. Podobně by se měly vyhledávače poprat s jinými chybami, například se zacyklením kanonických linků nebo odkázáním na URL blokovanou v robots.txt.

Alternativní způsoby nastavení kanonického linku

Když nemůžete nebo nechcete použít <link rel="canonical" ...> v HTML kódu, můžete ho zadat i jinak:

Javascriptem

Proslýchá se, že Google bere ohled na <link rel="canonical" ...> zapsaný do stránky javascriptem. Pravděpodobně to bude platit pouze pro stránky, které Google javascriptem také renderuje. (Léto 2018.)

HTTP hlavičkou

kanonický link se dá Googlu poslat přes http protokol. Pokud například udržujete složitou aplikaci, které nechcete nic přidávat do html kódu, může posloužit přidání hlavičky tak, aby ji posílal server. HTTP hlavička vypadá takto:

Link: <http://www.example.com/kanonicka-stranka.html>; rel="canonical"

Tuto hlavičku by měla posílat taková URL, která není kanonická. Když kanonická stránka ukáže http hlavičkou sama na sebe, nevadí to.

Obzvlášť užitečné je kanonizovat takto zdroje, které nejsou html stránka, například pdfka nebo wordovské dokumenty.

Nevíte-li, jak se nastavuje hlavička do HTTP protokolu, vězte, že to můžete udělat v nastavení serveru (Apache, Nginx) nebo skriptovacím jazykem (PHP, Python apod.).

Umístěním kanonické stránky v sitemapě

Dávejte do sitemap kanonické stránky. Nedávejte do sitemap URL, které nepovažujete za kanonická. Google i Seznam berou při rozhodování, která stránka bude zastupovat daný obsah, ohled na různé signály. Umístění v sitemapě je jedním ze silných signálů (spolu s krátkostí URL, množství parametrů, interní odkazovou strukturou atd.).

Ignorované parametry v Google Search Consoli

Vlezte si to Google Search Console (dříve webmaster tools) a v menu Konfigurace stránek > Nastavení v oblasti Zpracování parametrů nastavte ignorované parametry.

Typicky se zde nastavují parametry jako SortBy, razeni apod., tedy způsob řazení, referer (stránka, ze které se přišlo) a podobně. Taky se jako ignorované nastavují parametry pro tisk nebo zobrazení. Když potom Google najde stránku, která má některý z uvedených parametrů, tak ji nebude indexovat, ale prohlásí si ji pro sebe za totožnou se stránkou bez onoho parametru.

Příklad: pokud nastavím v Google webmaster tools ignorovaný parametr "razeni", potom Google sloučí následující stránky do kanonické množiny, a bude je tedy chápat jako totožné:

http://www.example.com/stranka.php
http://www.example.com/stranka.php?razeni=datum
http://www.example.com/stranka.php?razeni=abeceda

Proč je to dobré nastavit: tohle přesně pomáhá Googlu stránky správně kanonizovat. Pokud náhodou vedou odkazy na různé členy kanonické množiny (třeba nějaký odkaz vede na tisk, protože na to prostě někdo odkázal), tak nastavení ignorovaného parametru způsobí, že se budou odkazy počítat pro celou kanonickou množinu. V praxi to potom je stejné, jako kdyby všechny odkazy vedly na kořen kanonické množiny.

Ignorovaný parametr nebo kanonický link?

Zmínil jsem dvě metody, jak kanonizovat přirozené duplicity. Kterou je lepší používat?

Je to asi jedno, obě metody se navzájem doplňují a nahrazují. Já raději používám Google webmaster tools. Na druhou stranu, až začne Seznam podporovat kanonický link (odhaduju to na rok 2011), bude univerzálnější pracovat s kanonickým linkem.

Povídání o slově kanonizace

Když se dneska mluví o kanonizaci, myslí se tím obvykle svatořečení nějakého hodného mrtvého člověka. Kanonizace ale v jiném ze svých významů znamená ujednocení, tento význam používám v tomto článku. Původně řecké slovo κανών znamenalo rákosový prut, kterým se měřilo a který se stal standardem. Kánon tedy v přeneseném smyslu znamená standard nebo jednotnost. V ranném křesťanství vznikalo hodně povídek o různých super svatých křesťanech, ale začaly to být moc pohádky, a tak musel papež udělat ujednocení, tedy kanonizovat. Kdo potom nebyl kanonizován, už nebyl svatým, smůla.

Vyhledávače také potřebují různé stránky ujednocovat. Tedy kanonizovat.

(Protože se na rákos také hrálo, byl canon také název pro píšťalu. Když se začaly dělat pistole, říkalo se jim píšťaly, tedy kanóny. Ale to s kanonizací / ujednocováním nesouvisí.)

Nějaké závěry o přirozených duplicitách

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Články Katalog zdrojů SEM SEO

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.