Dokumentacija
Nastavite kanonični naslov
Nastavite kanonični naslov
Ista stran je običajno dosegljiva na več naslovih: z www in brez, s poševnico na koncu ali brez, s ?utm_source=newsletter ali ?sort=price na koncu. Kanonična oznaka (canonical) Googlu pove, kateri je pravi naslov, zato je stran v rezultatih navedena enkrat, z vsemi povezavami, štetimi skupaj, namesto da tekmuje s kopijami same sebe.
Narobe gresta dve stvari. Brez oznake Google ugiba in včasih izbere naslov s sledilnimi parametri. Huje je, kadar canonical kaže na drugo spletno mesto, skoraj vedno na testni naslov (https://staging.example.com/…), ki je ostal po objavi: Googlu pove, da prava stran živi drugje, in živa stran lahko izpade iz rezultatov v korist naslova, ki ga nihče ne bi smel videti. Kontrolni seznam strani manjkajočo oznako označi kot Popravi, canonical na drugem gostitelju pa kot Preveri.
Kako izgleda pravilen canonical
Ena oznaka v <head> strani, s polnim naslovom te iste strani:
<link rel="canonical" href="https://example.com/services/">
| Canonical | Rezultat |
|---|---|
| lastni naslov strani na vaši domeni | OK |
vaša domena z www ali brez |
OK (a uporabite različico, na katero stran preusmerja, glejte en naslov, z www ali brez) |
drug gostitelj, npr. staging.example.com ali example.webflow.io |
Preveri |
| ni oznake | Popravi |
Vsaka stran kaže sama nase, ne na domačo stran. Canonical na domačo stran na vsaki strani Googlu pove, da so vse strani kopije domače.
Preverite sami
Namesto example.com vpišite svojo stran in poskusite tudi podstran:
curl -sL https://example.com | grep -ioE '<link[^>]+rel="?canonical"?[^>]*>'
curl -sL https://example.com/services/ | grep -ioE '<link[^>]+rel="?canonical"?[^>]*>'
Vsak ukaz naj izpiše eno oznako, katere href je lastni naslov te strani na živi domeni.
Kako popraviti
WordPress
WordPress sam doda canonical samo posameznim prispevkom in stranem. Yoast SEO in Rank Math ga dodata vsem stranem (domača, kategorije, arhivi) in sta najpreprostejši popravek za manjkajočo oznako: namestite enega in oznaka se pojavi.
Kadar canonical kaže na testni naslov, je stari naslov še nekje shranjen:
- Settings → General: WordPress Address (URL) in Site Address (URL) morata biti oba živi naslov.
- Posamezna stran ima lahko svoj canonical: polje Yoast SEO → Advanced → Canonical URL ali Rank Math → Advanced → Canonical URL. Prazno pomeni "ta stran", kar je prav.
- Če je testni naslov še v bazi (prispevki, gradniki, nastavitve vtičnikov), ga zamenjajte povsod. Z WP-CLI najprej poskusite brez sprememb:
wp search-replace 'https://staging.example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'https://staging.example.com' 'https://example.com' --all-tables
Pred drugim ukazom naredite varnostno kopijo baze. Brez WP-CLI isto naredi vtičnik za iskanje in zamenjavo. Nato počistite predpomnilnik strani.
Node.js in Next.js
V Next.js App Routerju nastavite metadataBase enkrat v korenski predlogi, canonical pa na vsaki strani:
// app/layout.js
export const metadata = {
metadataBase: new URL('https://example.com'),
};
// app/services/page.js
export const metadata = {
alternates: { canonical: '/services/' },
};
Za dinamične strani ga vrnite iz generateMetadata:
export async function generateMetadata({ params }) {
const { slug } = await params;
return { alternates: { canonical: `/blog/${slug}` } };
}
alternates.canonical ne dajte v korensko predlogo: vsaka stran, ki ga ne povozi, ga podeduje, in cela stran kaže na domačo. Če canonical kaže predogledni naslov, je metadataBase sestavljen iz okoljske spremenljivke, ki za produkcijo ni nastavljena.
Laravel
V <head> predloge:
<link rel="canonical" href="{{ url()->current() }}">
url()->current() je trenutni naslov brez poizvedbe, zato različice z ?utm_… in ?page= vse kažejo na čist naslov. Za izenačevalnikom obremenitve ali Cloudflarom preverite, da Laravel zaupa proxyju, sicer gradi naslove http://. Če canonical gradite iz config('app.url'), preverite APP_URL v .env na živem strežniku in poženite php artisan config:cache.
Statični HTML
Oznako dodajte v <head> vsake strani, vsako z lastnim naslovom:
<link rel="canonical" href="https://example.com/contact/">
Uporabite natanko obliko, ki jo stran res uporablja: https://, z www ali brez in s poševnico na koncu ali brez, tako kot stran preusmerja.
Shopify
Teme Shopify canonical izpišejo v theme.liquid. Če ga kontrolni seznam ne najde, odprite Online Store → Themes → … → Edit code → Layout → theme.liquid in v <head> dodajte:
<link rel="canonical" href="{{ canonical_url }}">
Če kaže na *.myshopify.com ali staro domeno, pod Settings → Domains nastavite pravo domeno kot primarno.
Wix
Wix canonical doda sam, glede na povezano domeno. Če kaže na napačnega gostitelja, preverite, da je vaša domena povezana in nastavljena kot primarna. Posamezna stran ima lahko canonical po meri v nastavitvah SEO strani (Advanced SEO); pustite ga praznega, razen če imate razlog.
Webflow
Odprite Site settings → SEO in Global canonical tag URL nastavite na živo domeno, npr. https://example.com (brez poti; Webflow doda pot vsake strani). Preverite tudi, da je domena pod Site settings → Publishing nastavljena kot privzeta, nato kliknite Publish.
Squarespace
Squarespace canonical doda sam in ga ni mogoče urejati. Uporabi primarno domeno: če kaže *.squarespace.com ali staro domeno, v nastavitvah Domains nastavite pravo domeno kot primarno.
Po objavi ali selitvi
Canonical preverite na dan, ko gre stran v živo, in po vsaki menjavi domene. Je ena redkih napak, ki se na strani ne vidi, obiskovalcu ničesar ne pokvari in Google tedne tiho pošilja na napačen naslov.
Potrdite popravek
Znova poženite ukaza curl iz razdelka Preverite sami, nato v PulseKeeperju odprite tarčo in na zavihku Kontrolni seznam kliknite Preveri zdaj. Postavka se v nekaj minutah obarva OK, ne šele ob naslednjem dnevnem preverjanju. V Google Search Console URL inspection pokaže tako canonical, ki ste ga navedli, kot tistega, ki ga je izbral Google.