Tag canonical

Come implementare correttamente rel=canonical: elemento link HTML, header HTTP Link per i PDF, URL assoluti, un solo canonical per pagina e principali errori da evitare.

Prima pubblicazione: 23 giu 2026 · Ultimo aggiornamento: 24 ago 2026 · Avanzato
1 segnale di evidenza in questa pagina

Un tag canonical (rel=canonical) dice ai motori di ricerca quale URL è la versione preferita di un contenuto duplicato. È un segnale forte ma non una direttiva: Google può superarlo. I metodi validi sono il link HTML nel head (mai nel body), l'header HTTP Link per PDF e altri documenti non HTML e la sitemap come segnale più debole. Dichiara una sola relazione canonical non ambigua per pagina, usa URL assoluti e autoreferenziali per le pagine preferite. Non canonicalizzare pagine paginate verso pagina 1 e non combinare canonical con noindex o blocco robots.txt. Testa risposta grezza, DOM renderizzato, header e confronto tra canonical dichiarato dall'utente e scelto da Google in Search Console.

TL;DR — rel=canonical è un segnale, non una regola: un’indicazione forte che Google può e talvolta supera. Metodi validi: elemento HTML <link rel="canonical"> nel <head> (nel <body> viene ignorato), header HTTP Link: rel="canonical" (l’unico modo per canonicalizzare PDF e altri documenti non HTML) e presenza nella sitemap come segnale più debole. Usa esattamente un canonical non ambiguo per pagina: dichiarazioni multiple o in conflitto possono produrre risultati inattesi. Usa URL assoluti, preferisci l’autoreferenziale per le pagine, non canonicalizzare una serie paginata alla pagina 1 e non combinare canonical con noindex, blocco robots.txt o 4XX: ciascuno impedisce a Google di leggere o rispettare il tag. Testa con view-source e DOM renderizzato, curl -I per l’header e Controllo URL di GSC (canonical dichiarato dall’utente contro quello scelto da Google).

Un canonical è una dichiarazione, non una decisione

Tieni separate due idee. La canonicalizzazione è il processo con cui Google sceglie un URL rappresentativo tra i duplicati: pesa molti segnali. Il tag canonical è solo uno di quei segnali, cioè la tua preferenza dichiarata. Questa pagina spiega come dichiararla correttamente; la scelta in sé vive nell’hub sulla canonicalizzazione.

Questa distinzione è la spina dorsale dell’accuratezza, perché Google dice esplicitamente che “indicating a canonical preference is a hint, not a rule.” (traduzione) «Indicare una preferenza canonical è un suggerimento, non una regola.» È un suggerimento forte — come spiego nel mio approfondimento sulla canonicalizzazione, il canonical è considerato un segnale forte, ma Google lo ignora se altri segnali prevalgono — e non è mai una direttiva. Se dichiari A mentre link interni, sitemap e redirect puntano tutti a B, Google può scegliere B. È lo stato di Search Console «Duplicato: Google ha scelto una pagina canonica diversa da quella indicata dall’utente». Prova a sostegno di questa affermazione Canonicalization methods communicate a preferred URL, but Google can choose a different canonical when signals conflict. Ambito: Google Search canonical selection; applies to duplicate or very similar pages. Attendibilità: alta · Verificato: Google: URL canonicalization

Tre modi senza redirect per dichiarare un canonical

Oltre ai redirect, Google documenta tre modi non basati su redirect per indicare un canonical, con pesi diversi: Prova a sostegno di questa affermazione Alongside redirects, Google documents three non-redirect ways to indicate a canonical: an HTML link element, an HTTP Link header, and sitemap inclusion. Ambito: The three non-redirect canonical declaration approaches covered in this article; Google also documents redirects as a canonicalization method. Attendibilità: alta · Verificato: Google: Specify a canonical URL

  • HTML <link rel="canonical"> nel <head> — “A strong signal that the specified URL should become canonical.” (traduzione) «Un segnale forte affinché l’URL specificato diventi canonico.» È il metodo ordinario per le pagine HTML.
  • Header di risposta HTTP Link: rel="canonical" — per documenti in cui non puoi inserire un elemento <link>. Google dice che puoi usare un header di risposta HTTP con attributo target rel=“canonical” definito da RFC5988 invece di un elemento HTML, anche per documenti non HTML come i PDF. Il metodo HTML funziona solo per le pagine HTML, non per file come i PDF; per questi casi usa l’header HTTP rel=“canonical”. È la risposta alla domanda «come canonicalizzare un PDF».
  • Presenza nella sitemap — è un segnale debole che aiuta gli URL inclusi nella sitemap a diventare canonici. È reale, ma è il più debole dei tre.

Due aspetti da ricordare sul loro rapporto:

  • Si sommano. Google dice che questi metodi possono accumularsi e diventare più efficaci quando vengono combinati. Un <link> autoreferenziale, una sitemap pulita e link interni coerenti verso lo stesso URL sono molto più forti di un solo segnale.
  • Nessuno è obbligatorio. Google incoraggia a usarli, ma precisa che nessuno è obbligatorio e che il sito probabilmente funzionerà bene anche senza dichiarare una preferenza canonical. Dichiararne uno elimina ambiguità; non dichiararlo non è un errore.

Separatamente, un redirect 301 è un segnale di consolidamento ancora più forte di rel=canonical, ma è uno strumento diverso (ne parlo più avanti nel confronto canonical/301/noindex).

Un PDF non ha un <head>, quindi non c’è posto per un elemento <link>. La soluzione è inviare il canonical nell’header di risposta HTTP a livello di server. La forma è:

Link: <https://www.example.com/downloads/whitepaper.pdf>; rel="canonical"

Lo configuri sul server (Apache .htaccess, Nginx) o sulla CDN/edge; guarda la scheda Scripts per snippet Apache e Nginx funzionanti e per il comando curl -I che conferma l’invio dell’header. Il metodo header funziona anche per HTML, ma su HTML l’elemento <link> è più semplice; usa l’header quando non puoi modificare il markup (PDF, immagini e altri documenti non HTML).

Deve stare nel <head> — la trappola del body-placement

È il problema che brucia più persone, quasi sempre per errore. Google dice che l’elemento rel=canonical viene accettato solo se appare nella sezione <head> di un HTML valido. Il post del 2013 sui «5 errori comuni» ribadisce che una dichiarazione trovata nel <body> viene ignorata. In breve, le dichiarazioni nel <head> vengono elaborate, quelle nel <body> no. Prova a sostegno di questa affermazione Google accepts an HTML rel=canonical link element only in a valid head section and disregards a canonical placed in the body. Ambito: HTML link-element canonicals in Google Search; HTTP-header canonicals are a separate method. Attendibilità: alta · Verificato: Google: Common rel=canonical mistakes

Ecco la trappola. Hai scritto il canonical nel <head> della sorgente. Ma quando il browser o il motore di ricerca costruisce la pagina, il <head> può chiudersi prima: tag non chiusi, JavaScript iniettato nel head o un <iframe> nel head possono chiuderlo prematuramente. Il canonical finisce così nel <body> renderizzato, dove viene ignorato. L’ho descritto nella mia guida alla SEO JavaScript: tag non chiusi o JavaScript iniettato possono terminare prima il <head> e spingere il canonical nel <body> renderizzato, dove non verrà rispettato.

Il problema è invisibile in view-source: l’HTML grezzo sembra corretto. Devi confrontarlo con il DOM renderizzato (pannello Elements di DevTools o HTML renderizzato di Controllo URL GSC) per vedere dove è finito davvero il canonical.

Sul JavaScript, la guida Google invita a scegliere un metodo e non a contraddirsi: “If you can’t set the canonical URL in the HTML source code, leave it out and only set it with JavaScript.” (traduzione) «Se non puoi impostare l’URL canonico nel codice sorgente HTML, omettilo e impostalo soltanto con JavaScript.» Se JS inietta il canonical, assicurati che lo inserisca correttamente nel <head>: non renderizzarne anche uno diverso lato server.

Dichiarare una sola relazione canonical per pagina

Ogni pagina dovrebbe avere una relazione canonical non ambigua. L’attuale guida Google sui metodi canonical avverte che combinare metodi può causare errori e risultati inattesi; non definisce un vincitore primo tag/ultimo tag. Un post Google Search Central del 2013 diceva che dichiarazioni multiple sarebbero probabilmente state ignorate. Trattalo come contesto storico, non come contratto deterministico del parser: la conclusione prudente oggi è segnalare il conflitto, esporre ogni dichiarazione HTML e HTTP e correggere il template.

La causa di solito non è un refuso, ma la sovrapposizione di sistemi. Il CMS ne inietta uno, il tema uno e un plugin SEO uno: tre dichiarazioni in conflitto. Ho segnalato direttamente questo schema nel mio approfondimento sulla canonicalizzazione: più tag rel=canonical probabilmente vengono ignorati e, in molti casi, il problema nasce perché CMS, tema e plugin inseriscono tag in punti diversi. Se stai eseguendo il debug di un canonical che «non funziona», conta prima i tag nel DOM renderizzato.

Usa URL assoluti, non relativi

Google consiglia di usare percorsi assoluti anziché relativi con l’elemento rel=canonical: anche se supportati, i percorsi relativi possono causare problemi nel tempo. Il motivo è meccanico: un <link> accetta URL relativi e assoluti e un href relativo come /page/ si risolve rispetto all’URL corrente. Con una base malformata o un percorso imprevisto può risolversi dove non volevi. Scrivi sempre l’URL completo:

<!-- Good -->
<link rel="canonical" href="https://www.example.com/dresses/green/green-dress.html">

<!-- Bad: relative path -->
<link rel="canonical" href="/dresses/green/green-dress.html">

La stessa logica vale per host e protocollo: punta alla versione finale reale (https:// invece di http://, con il tuo host canonico). Non usare un frammento URL come canonical: in generale Google non supporta i frammenti URL.

Canonical autoreferenziali e paginazione

Che una pagina nomini se stessa come canonical va bene ed è consigliato per la versione preferita: rende l’intento chiaro quando gli altri segnali non sono perfettamente allineati. Se un controllo dice “no different canonical”, un canonical autoreferenziale soddisfa quella condizione: è una dichiarazione consentita dello stesso URL, non un target concorrente.

La paginazione è il caso in cui l’autoreferenziale conta di più e in cui si sbaglia spesso. Non canonicalizzare la pagina 2, 3, 4… di una serie verso la pagina 1: specificare un rel=canonical da una pagina successiva alla prima non è un uso corretto. La pagina 2 non è un duplicato della pagina 1, perché ha contenuto diverso. Usa invece canonical autoreferenziali su tutte le pagine della serie: ogni pagina ha il proprio canonical.

Un errore correlato di sovra-canonicalizzazione: una pagina categoria o landing che canonicalizza verso un singolo articolo in evidenza. La categoria e l’articolo non hanno lo stesso contenuto, quindi anche questo uso è scorretto.

Non rompere la visibilità del canonical — e non puntare a un target rotto

Un canonical funziona solo se Google può eseguire il crawling della pagina, leggere il tag e non riceve un’istruzione contraddittoria. È un problema di salute lato sorgente: riguarda la possibilità di vedere il tag sull’URL duplicato. Tre modi in cui ci si sabota:

  • Bloccare l’URL canonicalizzato in robots.txt. Se applichi Disallow al duplicato, Google non può eseguirne il crawling e non vede il canonical: non può consolidare. Un URL escluso tramite robots.txt può comunque essere indicizzato senza che Google ne conosca il contenuto. Non usare robots.txt per canonicalizzare.
  • Impostare noindex sull’URL canonicalizzato. Sono istruzioni contraddittorie: noindex dice “rimuovi questa pagina”, canonical dice “consolida questa pagina”. Non mischiarle: scegli in base all’intento.
  • Restituire un 4XX sull’URL canonicalizzato. Effetto simile a noindex: Google non può leggere il tag e non può trasferire il consolidamento.

Non dichiarare neppure canonical in conflitto tra metodi diversi: non specificare URL canonici differenti per la stessa pagina mediante tecniche diverse, per esempio un URL nella sitemap e uno diverso in rel=canonical.

Esiste un problema separato, lato target, che spesso sfugge perché è nella direzione opposta: l’URL verso cui punti deve essere una destinazione pulita. RFC 6596 invita a non designare un target che è a sua volta sorgente di un redirect, che rimanda a un altro canonical o che restituisce un codice di errore; la checklist di verifica Google aggiunge di controllare che il target non abbia noindex. Puntare a un target che reindirizza, concatena, è noindexed o restituisce errore significa chiedere a Google di consolidare su un URL che non può rappresentare davvero la pagina: verifica separatamente che il target restituisca un 200 pulito, senza redirect, noindex o un altro canonical.

Se usi hreflang, il canonical deve puntare a una pagina nella stessa lingua oppure alla migliore lingua sostitutiva disponibile quando non esiste una pagina canonica nella stessa lingua.

Canonical, redirect 301 o noindex

Questi strumenti vengono trattati come intercambiabili. Non lo sono: guarda la tabella decisionale nella scheda Cheat Sheets. In breve:

  • rel=canonical — entrambi gli URL restano live e sottoposti a crawling; esprimi una preferenza e Google consolida i segnali su quello scelto. È un segnale. Usalo quando entrambi gli URL devono restare accessibili e sono duplicati o quasi duplicati (parametri, versioni per la stampa), non come rimedio generale per contenuti in syndication.
  • Redirect 301 — utenti e bot vengono spostati al target; è il segnale di consolidamento più forte. Usalo quando il duplicato non deve essere raggiungibile.
  • noindex — una direttiva che rimuove una pagina dalla ricerca (la pagina deve restare raggiungibile per permettere a Google di vedere il tag). Usalo per rimuovere, non per consolidare.

Per i duplicati interni Google preferisce il canonical: sconsiglia noindex, perché blocca completamente la pagina dalla Ricerca, e indica le annotazioni rel=canonical come soluzione preferita. Prova a sostegno di questa affermazione Google recommends rel=canonical rather than noindex when the goal is selecting a canonical within one site, because noindex removes the page from Search. Ambito: Google Search guidance for duplicate pages within a single site. Attendibilità: alta · Verificato: Google: Specify a canonical URL

Perché un canonical viene ignorato

Quando Google sceglie un canonical diverso da quello dichiarato, quasi sempre accade per uno di questi motivi: i due URL non hanno davvero lo stesso contenuto; esistono più canonical o canonical in conflitto; il tag è nel body; è relativo o rotto; l’URL è bloccato da robots o restituisce 4XX; oppure segnali più forti (link interni, sitemap, redirect) puntano altrove.

Il caso «contenuto non realmente uguale» colpisce soprattutto i siti renderizzati in JavaScript. John Mueller spiega che, nelle SPA il cui HTML statico è quasi identico, l’esecuzione non corretta di JavaScript può impedire a Google di vedere il contenuto unico e far apparire uguali le pagine. In quel caso Google non distingue i duplicati e può consolidare o separare gli URL in modi indesiderati.

Bing tratta rel=canonical allo stesso modo — un segnale di chiarezza, non una cura universale — e lo raccomanda esplicitamente per i contenuti in syndication (chiedi al partner di puntare il canonical all’originale). È una divergenza reale da Google: “the canonical link element is not recommended for those who want to avoid duplication by syndication partners, because the pages are often very different.” (traduzione) «L’elemento link canonical non è consigliato a chi vuole evitare duplicazioni da partner di syndication, perché le pagine sono spesso molto diverse.» Prova a sostegno di questa affermazione Google's current troubleshooting guidance does not recommend rel=canonical as the general fix for duplication by syndication partners, because syndicated pages are often materially different from the original. Ambito: Google Search guidance for syndicated-content duplication; canonical remains valid where the syndicated copy is a genuine duplicate or superset of the original. Attendibilità: alta · Verificato: Google: Fix canonicalization issues Per quel problema Google consiglia di chiedere al partner di impedire l’indicizzazione della copia sul proprio sito, non di usare un canonical: funziona solo quando il target è davvero lo stesso contenuto, mentre le copie syndicated spesso non sono abbastanza simili. Nel toolkit Bing, tag canonical, redirect, hreflang, noindex e IndexNow sostengono questa chiarezza, ma la base resta un sito lineare che eviti duplicazioni inutili. Un’altra divergenza: per duplicazione da parametri Bing offre URL Normalization in Bing Webmaster Tools come soluzione preferita.

Come testarlo

Il flusso numerato è nella scheda Checklists; i comandi sono in Scripts. I passaggi fondamentali:

  1. View-source della pagina: esiste esattamente un <link rel="canonical">, nel <head>, con URL assoluto?
  2. Confronta il DOM renderizzato (DevTools / HTML renderizzato da GSC): è rimasto nel <head> ed è ancora l’unico dopo il rendering?
  3. curl -I sull’URL per cercare l’header HTTP Link: rel="canonical" (così controlli PDF e documenti non HTML).
  4. Controllo URL GSC: confronta il canonical dichiarato dall’utente con il canonical scelto da Google. Una differenza è un segnale da indagare. Due cautele: il risultato indicizzato può essere in ritardo di ore e il live test conferma solo che l’URL è recuperabile in questo momento, non quale URL Google sceglierà.
  5. Crawling del sito (Ahrefs Site Audit, gratuito tramite Ahrefs Webmaster Tools per siti verificati, oppure Screaming Frog) per intercettare problemi canonical su larga scala.

Per il quadro più ampio — come Google sceglie un canonical tra circa 40 segnali — consulta l’hub sulla canonicalizzazione. Problemi vicini, come contenuti duplicati e parametri URL, sono di solito il motivo per cui si introduce un canonical.

Aggiungi una nota dell’esperto

Fissa una citazione dell’esperto

Persona nuova? Crea il suo profilo non rivendicato in /admin/experts/ → Fissa una citazione dell’esperto prima.