Jak naprogramovat kanonizaci v redakčním systému? Doporučení pro vývojáře CMS.

Kanonizace, výraz v křesťanství pro svatořečení, ale také kouzelný příkaz pro SEO, jenž více stránek (URL) se stejným obsahem odkáže na jednu „hlavní“. Pokud jste o tomto výrazu (anglicky canonicalization) ještě neslyšeli, vězte, že pro lepší výsledky v organice se vyplatí jeho nastudování. V rámci květnové přednášky na Čtvrkonu byl vznesen dotaz od Vojty Horáka ze 7Divs, a to „Jak bych vyřešil uživatelské rozhraní v redakčním systému tak, aby správce e-shopu nebo blogu mohl kanonické adresy nastavovat“. Otázka byla skvělá, jen odpověď mi nepřišla na jazyk. Dostal jsem ze sebe pouze příklad z WordPressu, ale stále cítím, že jsem neodpověděl na vše. Je na čase to napravit …

Jak naprogramovat v CMS canonical tag

Kanonizace slouží v zásadě k tomu, aby množina stránek obsahující stejný nebo velmi podobný obsah měla stanovenou jednu URL jako „matku“, kterou vyhledávačům doporučíte za hlavní zdroj informací. Pokud není definovaná hlavní stránka (matka), tak v horší případě všechny duplicity získávají vlastní rank (konkurují si) a v tom lepším si udělají vyhledávače vlastní kanonizaci, což může vést k výběru majoritní stránky a přesunu ranku z kanonizace na jinou URL, méně konverzní. Obecně se tomu říká ošetření duplicit stránek, kdy kanonizace je jeden z tagů, který duplicitám pomáhá zabránit.

Myslíte si, že takové stránky nemáte? Vsadím se, že máte. Většina mnou auditovaných e-shopů kanonizaci vůbec nepoužívala i přesto, že jsem na nich objevil stovky až tisíce neošetřených duplicit. Zpravidla pak takové duplicity vznikají neznalostí nebo laxním vývojem webu. Výjimky samozřejmě existují a často to jsou kvalitní krabicové řešení, kde na optimalizaci pracoval tým odborníků a nikoliv jeden programátor s limitovanou kapacitou znalostí. A i proto jsem byl nadšený, že na trhu vzniká nová generace vývojářů, které zajímá SEO a jeho dopad na tržby klientů. Jak to ale naroubovat do CMS?

Canonicalization pro blogy a malé weby

Je zřejmé, že ošetřit duplicity stránek pro web o velikosti mého blogu (tedy několik stovek stránek), je úplně něco jiného, než ošetřovat e-shop (desetitisíce až statisíce stránek). U malých projektů není třeba vymýšlet nějaké složité nástroje a bohatě postačí, pokud si můžete canonical tag nastavit ručně pod každým článkem. Tedy potřebujete-li mít jeden článek pod jakoukoliv množinou URL, stačí do CMS naprogramovat pole, kam ke každé záměrně vytvořené duplicitě nastavíte odkaz na hlavní URL (matku).

<link rel=“canonical“ href=“https://domena.cz/hlavni-stranka/“ />

Důvod, proč duplicitní stránky úmyslně vytvářet si moc nedokáži představit, ale pro někoho asi existuje. Osobně se však častěji setkávám s tím, že web je špatně ošetřený na vstupu a při vytvoření jednoho článku (například do konkrétní sekce), rovnou vytvoří jejich duplicity pro štítky, archiv apod. Druhou variantou jsou pak sami uživatelé „Napsal jsem článek a chtěl bych aby se zobrazoval na více místech na webu. Nakopíruji text a všude kde ho chci vidět, tak založím novou stránku“. Právě vytvořeným alternativám se pak přidá nějaký nesmysl za URL a hle, duplicitní stránka je na světě.

Ukázka pole pro kanonické URL – Yoast SEO – WordPress

Pokud takovou stránku máte založenou někde v administraci, může se vám hodit mít řádek, ve kterém vyplníte URL stránky, kterou chcete preferovat a tím roboty nasměruje na správnou cestu. Pokud však vývojář navrhl web tak, že duplicity sice vytváří, ale vy je nenajdete zapsané v CMS, tak vám nezbývá nic jiného, než kontaktovat programátora společně se SEO konzultantem a požadovat nápravu.

Canonicalization pro e-shopy

Nástroj pro vlastní ošetření kanonizace v blogu máme, ale pro e-shopy, kde se duplicitám jen těžko vyhneme to bude trochu oříšek. Nejdříve je dobré pochopit jak takové duplicity v 9 z 10 případů vznikají a jak je objevit. Podívejme se například na DivokéOpice a jejich kategorii na umělé vagíny.

Kategorie, pro kterou byl primárně napsán popisek a vyplněny meta tagy zní takto:

https://www.divokeopice.cz/umela-vagina/

Jenže stránkováním, řazením a filtry můžeme vyvolat stovky až tisíce URL se stejným obsahem:

https://www.divokeopice.cz/umela-vagina/strana-2/
https://www.divokeopice.cz/umela-vagina/?priceMin=25&priceMax=42
https://www.divokeopice.cz/umela-vagina/?order=price
https://www.divokeopice.cz/umela-vagina/?order=-price
https://www.divokeopice.cz/umela-vagina/?order=bestseller
https://www.divokeopice.cz/umela-vagina/?order=name

Pokud se podíváte do zdrojového kódu, tak zjistíte, že všechny tyto duplicitní stránky mají příkaz:

<link rel=“canonical“ href=“https://www.divokeopice.cz/umela-vagina/“ />

Na tomto webu tedy nehrozí, že by množina URL nebyla ošetřena a vyhledávač by místo hlavní kategorie upřednostňoval například filtr s cenovým rozsahem. Pokud si říkáte, že jste tohle nikdy neviděli crawlery udělat, tak doporučuji navštívit Google Analytics > Vstupní stránky (sekundární dimenze Médium, filtr organic). Hlavně při přechodu z jedné struktury na jinou či z jednoho redakčního systému na jiný řada méně zkušených kolegů jen nakliká pro redirecty viditelný strom a nepodívají se do GA, zda náhodou díky neošetřené kanonizaci nechodí traffic na nějakou z množin filtrů řazení apod.

A teď jak něco takového zavést do CMS? Protože ruční ošetřování pro takovou množinu by bylo extrémně časově náročné, přijde na řadu podmínkování podobně jako máte v robots.txt podmínky na zákaz procházení nežádoucích URL. Vytvořil bych tedy tabulku, kam každý zkušenější admin může zapsat filtry na duplicity, který by řekl: Pokud URL obsahuje jeden z níže uvedených příkazů, automaticky jí přidej tag <link rel=““ /> na variantu, která neobsahuje a ani nezačíná na tyto výrazy.

Canonicalization: ?priceMin
Canonicalization: ?order
Canonicalization: strana-

Jinak řečeno v kanonickém zápisníku mám Canonicalization: ?priceMin. V databázi najdu například https://www.divokeopice.cz/umela-vagina/?priceMin=25&priceMax=42 a díky této podmínce vím, že taková stránka musí dostat tag  <link rel=“canonical“ href=“https://www.divokeopice.cz/umela-vagina/“ />. Tedy budu vždy odkazovat na tvar, který neobsahuje ani jednu z výše uvedených podmínek. Tím byste se měli vždy dostat na správný tvar URL.

Jednoduší by asi bylo jít na to opačně a od základu programátorsky ošetřit, že pro URL existuje pouze jeden tvar, který je nosný a jakékoliv další jeho varianty jsou automaticky kanonické. Bohužel, viděl jsem i e-shopy, kde by taková podmínka kanonizovala produkty na kategorie a je to tedy na individuálním zvážení programátora. V obou případech však řešení existuje a dělat kanonizace vřele doporučuji. Závěrem děkuji Vojtovi za skvělý dotaz a těším se na diskuzi k článku na mém Facebooku.

   Chcete si o vývoji CMS popovídat a vylepšit SEO u klientů? Napište mi …

⇓ Líbil se vám článek? Děkuji za jeho sdílení na sociálních sítí. ⇓