Kas iš tikrųjų yra canonical nuorodos ir kodėl jos tapo būtinybe
Jei kada nors teko dirbti su didesniu projektu, turbūt susidūrėte su situacija, kai tas pats turinys prieinamas per kelis skirtingus URL. Galbūt produkto puslapis rodomas ir su filtru, ir be jo, arba turinys dubliuojasi su ir be trailing slash. Paieškos sistemoms tai – tikra galvos skausmas, nes jos nežino, kurią versiją indeksuoti ir rodyti paieškos rezultatuose.
Canonical nuorodos (arba kanonines nuorodos) – tai būdas pasakyti Google ir kitoms paieškos sistemoms: „Klausyk, žinau, kad šis turinys pasiekiamas per kelis URL, bet štai šis yra pagrindinis”. Tai daroma naudojant paprastą HTML elementą:
<link rel="canonical" href="https://example.com/pagrindinis-puslapis/" />
Teoriškai skamba paprasta, bet praktikoje canonical nuorodų įgyvendinimas gali būti pilnas spąstų. Per savo karjerą mačiau projektus, kur neteisingai nustatytos canonical nuorodos sukėlė daugiau problemų nei jų neturėjimas apskritai.
Kada canonical nuorodos tikrai reikalingos
Pirmiausia, nesukime sau problemų ten, kur jų nėra. Ne kiekvienas projektas turi dubliuoto turinio problemą. Bet yra keletas klasikinių scenarijų, kur canonical nuorodos tampa būtinybe.
E-komercijos projektai – čia canonical nuorodos tiesiog gyvybiškai svarbios. Įsivaizduokite produktų katalogą su filtrais, rūšiavimu, paginacija. Vienas produktas gali būti pasiekiamas per dešimtis skirtingų URL:
- example.com/produktai/telefonas
- example.com/produktai/telefonas?sort=price
- example.com/produktai/telefonas?color=black
- example.com/produktai/telefonas?utm_source=facebook
Visi šie URL rodo tą patį produktą, bet paieškos sistemoms atrodo kaip atskiri puslapiai. Be canonical nuorodų jūsų SEO biudžetas tiesiog išgaruoja, nes Google švaisto crawl budget ant šimtų bevertžių dublikatų.
Turinys su sesijos ID ar tracking parametrais – jei jūsų sistema automatiškai prideda sesijos identifikatorius ar analitikos parametrus prie URL, turite problemą. Kiekvienas vartotojas techniškai mato unikalų URL, nors turinys identiškas.
Mobilios ir desktop versijos – jei dar turite atskiras m.example.com ir www.example.com versijas (nors responsive dizainas seniai turėtų būti standartas), canonical nuorodos padeda nurodyti, kuri versija yra pagrindinė.
Sindikacinė turinys – publikuojate straipsnius keliose platformose? Canonical nuoroda į originalų šaltinį apsaugo nuo to, kad jūsų turinys būtų laikomas vogtu.
Kaip teisingai implementuoti canonical nuorodas
Dabar prie praktiškų dalykų. Canonical nuorodą galima nustatyti trimis būdais, ir kiekvienas turi savo vietą.
HTML head sekcijoje – tai klasikinis ir patikimiausias būdas:
<head>
<link rel="canonical" href="https://example.com/pagrindinis-puslapis/" />
</head>
Svarbu: naudokite absoliučius URL su protokolu (https://), ne santykinius kelius. Taip, santykiniai keliai teoriškai veikia, bet praktikoje mačiau per daug atvejų, kai jie sukėlė problemų.
HTTP header – puikus variantas PDF failams, vaizdams ar kitam ne-HTML turiniui:
Link: <https://example.com/pagrindinis-dokumentas.pdf>; rel="canonical"
Šį metodą dažnai pamiršta, bet jis labai naudingas, kai turite dokumentus ar failus, kurie dubliuojasi skirtingose vietose.
Sitemap.xml – nors tai ne tikroji canonical nuoroda, Google laiko sitemap URL kaip „siūlomus” kanoninių puslapių variantus. Jei puslapyje nėra explicit canonical, sitemap versija turi papildomą svorį.
Vienas dalykas, kurį pastebėjau dirbdamas su įvairiomis CMS – WordPress, Drupal, Magento – visos jos turi savo canonical nuorodų valdymo mechanizmus. Problema ta, kad kartais įjungiate papildinį, kuris prideda savo canonical nuorodas, o tema jau turi savo. Rezultatas? Puslapyje atsiranda kelios canonical nuorodos, rodančios į skirtingus URL. Google tokiu atveju tiesiog ignoruoja jas visas.
Klasikinės klaidos, kurios kainuoja brangiai
Per metus konsultuodamas įvairius projektus, pastebėjau, kad tos pačios klaidos kartojasi vėl ir vėl. Štai TOP klaidos, kurių tikrai verta vengti.
Canonical nuoroda į 404 ar 301 puslapį – skamba absurdiškai, bet nutinka dažniau nei galvojate. Perdarote svetainę, pakeičiate URL struktūrą, bet pamiršate atnaujinti canonical nuorodas. Rezultatas? Visi puslapiai rodo canonical į neegzistuojančius URL. Google mato tai ir tiesiog ignoruoja jūsų canonical direktyvas.
Canonical grandinės – puslapis A rodo canonical į B, B rodo į C, C rodo į D. Google seka tik vieną šuolį, todėl tokios grandinės neveikia. Visada canonical turėtų rodyti tiesiai į galutinį variantą.
Cross-domain canonical be priežasties – matyti canonical nuorodą, rodančią į visai kitą domeną, yra įtartina. Tai turėtų būti naudojama tik sindikaciniam turiniui. Jei jūsų svetainėje canonical rodo į konkurento domeną (taip, mačiau ir tokių atvejų), turite rimtą problemą.
HTTPS/HTTP neatitikimas – jūsų svetainė veikia per HTTPS, bet canonical nuorodos rodo į HTTP versijas. Arba atvirkščiai. Tai siunčia painiuosius signalus ir gali sukelti indeksavimo problemų.
Canonical paginuotose sekcijose – turite straipsnių sąrašą, padalintą į puslapius. Klaida būtų visus puslapius (page=2, page=3 ir t.t.) nukreipti canonical į pirmąjį puslapį. Kiekvienas paginacijos puslapis turėtų turėti self-referencing canonical arba naudoti rel=”prev” ir rel=”next” (nors Google oficialiai jų nebepalaiko, kai kurie SEO specialistai vis dar rekomenduoja).
Canonical vs noindex vs robots.txt – kada ką naudoti
Dažnai matau painiavą tarp šių trijų mechanizmų. Visi jie susiję su tuo, kaip paieškos sistemos tvarko jūsų turinį, bet veikia visiškai skirtingai.
Canonical nuorodos sako: „Šis turinys egzistuoja, bet yra geresnė versija kitur”. Puslapis vis tiek gali būti indeksuojamas, bet jo vertė perduodama kanoniniam variantui. Tai švelniausia priemonė.
Noindex sako: „Neindeksuok šio puslapio apskritai”. Puslapis gali būti crawlinamas, bet neatsiras paieškos rezultatuose. Naudokite tai filtrams, paieškos rezultatų puslapiams, admin sekcijoms.
Robots.txt sako: „Net neateik čia”. Crawleriai apskritai neapsilanko puslapyje. Problema ta, kad jei kažkas nurodė nuorodą į užblokuotą puslapį, Google gali jį vis tiek įtraukti į indeksą (tik be turinio informacijos).
Praktinis patarimas: jei turite dubliuotą turinį, kuris turi kokią nors vertę vartotojams – naudokite canonical. Jei turinys neturi jokios vertės net vartotojams – noindex. Robots.txt naudokite tik techninėms sekcijoms, kurios tikrai niekam nereikalingos (admin panelės, sisteminiai failai).
Viena iš didžiausių klaidų – blokuoti puslapį robots.txt IR naudoti noindex. Taip neveikia, nes crawleris negali pamatyti noindex direktyvos, jei robots.txt neleidžia apsilankyti puslapyje.
Kaip patikrinti ar jūsų canonical nuorodos veikia
Teorija teorija, bet kaip žinoti, ar viskas veikia teisingai? Yra keletas būdų tai patikrinti.
Google Search Console – eikite į „Coverage” arba „Page Indexing” skiltį. Ten matysite, kurie puslapiai buvo atmesti kaip „Duplicate, Google chose different canonical than user”. Tai reiškia, kad jūsų canonical nuoroda konfliktuoja su tuo, ką Google mano esant teisinga.
Jei matote daug tokių atvejų, tai raudonas signalas. Arba jūsų canonical nuorodos neteisingos, arba Google turi priežastį jomis nepasitikėti (pavyzdžiui, canonical rodo į puslapį be turinio, arba su 301 redirect).
URL Inspection Tool – įveskite konkretų URL ir pažiūrėkite, ką Google mato kaip canonical. Jei skiriasi nuo to, ką nustatėte – ieškokite priežasties.
Screaming Frog arba panašūs crawleriai – puikus būdas masiškai patikrinti canonical nuorodas visoje svetainėje. Galite eksportuoti visus URL su jų canonical nuorodomis ir Excel’yje greitai pamatyti anomalijas.
Patikrinkite:
- Ar nėra puslapių su keliomis canonical nuorodomis
- Ar canonical nuorodos nenurodo į 404 ar redirect puslapius
- Ar nėra canonical grandinių
- Ar HTTPS/HTTP protokolai atitinka
- Ar nėra canonical nuorodų su parametrais (pvz., ?utm_source=…)
Rankinis patikrinimas – kartais paprasčiausias būdas yra tiesiog pažiūrėti puslapio šaltinio kodą. View Source ir ieškokite „canonical”. Matysite tiksliai, kas yra HTML’e.
Canonical nuorodos ir JavaScript framework’ai
Atskirą dėmesį verta skirti SPA (Single Page Application) ir JavaScript framework’ams – React, Vue, Angular. Čia canonical nuorodų valdymas tampa dar sudėtingesnis.
Problema ta, kad dažnai canonical nuorodos pridedamos dinamiškai per JavaScript, o tai reiškia, kad jos gali nebūti matomos, kai Google pirmą kartą crawlina puslapį. Nors Google teigia, kad puikiai vykdo JavaScript, praktikoje matau, kad tai ne visada veikia sklandžiai.
Jei statote SPA, rekomenduoju:
Server-Side Rendering (SSR) arba Static Site Generation (SSG) – tai užtikrina, kad canonical nuorodos būtų HTML’e nuo pat pradžių, be JavaScript vykdymo.
Prerendering – jei SSR per sudėtingas, bent naudokite prerendering servisą (Prerender.io, Rendertron) crawleriams.
Dynamic rendering – skirtingas turinys crawleriams ir vartotojams. Google oficialiai tai palaiko, nors ir nerekomenduoja kaip ilgalaikį sprendimą.
Next.js ir Nuxt.js turi įmontuotus mechanizmus canonical nuorodoms valdyti. Pavyzdžiui, Next.js su next/head:
import Head from 'next/head'
function Product() {
return (
<Head>
<link rel="canonical" href="https://example.com/produktas/" />
</Head>
)
}
Svarbu testuoti su tikrais crawleriais. Naudokite Google Search Console URL Inspection Tool ir pažiūrėkite „View Crawled Page” – tai tiksliai tai, ką Google mato.
Ką daryti, kai viskas jau sugadinta
Gerai, tarkime paveldėjote projektą, kur canonical nuorodos yra chaosas. Arba patys kažką sujaukėte ir dabar matote, kad Google indeksas nebeaprėpia svetainės teisingai. Kaip taisyti?
Auditas pirmiausia – nedarykite nieko, kol neturite pilno vaizdo. Išcrawlinkite visą svetainę, išeksportuokite visus URL su canonical nuorodomis, patikrinkite GSC duomenis.
Prioritizuokite – nereikia taisyti visko iš karto. Pradėkite nuo svarbiausių puslapių – produktų, kategorijų, pagrindinių turinio puslapių. Blogų įrašų archyvas gali palaukti.
Taisykite palaipsniui – jei keičiate tūkstančius canonical nuorodų vienu metu, Google gali sutrukti ir jūsų rankings gali svyruoti. Geriau po šimtą puslapių per savaitę, stebint rezultatus.
Dokumentuokite – užsirašykite, ką keitėte ir kada. Jei po mėnesio matote traffic kritimą, žinosite, kur ieškoti priežasties.
Stebėkite GSC – po pakeitimų kasdien tikrinkite Coverage reportą. Turėtumėte matyti, kaip „Duplicate” klaidos mažėja, o „Valid” puslapių daugėja.
Vienas svarbus dalykas – Google neperskaito jūsų canonical nuorodų iš karto. Tai gali užtrukti savaites ar net mėnesius, priklausomai nuo svetainės dydžio ir crawl budget. Būkite kantrūs.
Jei matote, kad Google vis tiek renkasi kitą canonical nei jūs nustatėte, tai gali reikšti, kad:
- Jūsų pasirinktas canonical neturi pakankamai turinio
- Jūsų canonical turi redirect
- Yra stipresnių signalų (pvz., daugiau backlinků) į kitą versiją
- Canonical nuoroda techniškai neteisingai implementuota
Kai canonical tampa strateginiu įrankiu, o ne tik technine detalė
Pradėjome nuo paprasto techninio elemento, bet tikiuosi dabar matote, kad canonical nuorodos – tai daugiau nei tik HTML eilutė. Tai strateginis įrankis, kuris gali išgelbėti jūsų SEO arba jį sunaikinti.
Praktikoje geriausia praktika yra paprasta: kiekvienas puslapis turėtų turėti self-referencing canonical nuorodą (rodančią į save), nebent tikrai yra geresnė versija kitur. Tai apsaugo nuo atsitiktinių parametrų, sesijos ID ir kitų dalykų, kurie gali sukurti dublikatus.
Jei dirbate su didesniu projektu, canonical nuorodų valdymas turėtų būti įtrauktas į development workflow. Kiekvieną kartą pridedant naują funkciją, kuri gali generuoti naujus URL (filtrai, rūšiavimas, paieška), klauskite: „Ar čia reikia canonical nuorodos?”
E-komercijos projektuose rekomenduoju nustatyti aiškią hierarchiją: produkto puslapis be parametrų yra canonical, visi filtrai ir variacijos rodo į jį. Kategorijų puslapiuose – pirmasis puslapis yra canonical, visi kiti paginacijos puslapiai turi self-referencing canonical.
Ir paskutinis patarimas – nesitikėkite, kad canonical nuorodos išspręs visas jūsų SEO problemas. Jos yra vienas įrankis iš daugelio. Jei turite galimybę išvis išvengti dubliuoto turinio (pvz., naudojant AJAX filtrams vietoj URL parametrų), tai dažnai geresnis sprendimas nei bandyti valdyti šimtus canonical nuorodų.
Canonical nuorodos yra kaip draudimas – tikitės, kad niekada neprireiks, bet kai prireikia, būsite dėkingi, kad jis yra. Tik įsitikinkite, kad jūsų „draudimo polisas” tikrai veikia, o ne tik egzistuoja popierių krūvoje.

