Canonical URL: cos'è e come configurarla

Cos'è rel canonical, perché serve ai motori di ricerca e come inserire il tag canonical in HTML, negli header HTTP e nelle CMS più diffuse.

Cos'è una canonical URL

Una canonical URL (o rel canonical) è un tag HTML che comunica al motore di ricerca: fra tutte le versioni di questa pagina, quella principale è questa. Risolve uno dei problemi SEO più comuni — la duplicazione dei contenuti, quando lo stesso materiale è raggiungibile da più indirizzi.

Senza canonical, è il motore di ricerca a decidere da solo quale versione trattare come principale — e spesso sceglie quella che non vorresti nell'indice. Il tag ti restituisce il controllo: dichiari esplicitamente l'URL preferito, e Google e Yandex seguono questo suggerimento nella maggior parte dei casi.

Canonical consolida i segnali delle pagine duplicate su un'unica versione principale — quella che il motore di ricerca mostra nei risultati.

Canonical in numeri

2009

Anno di introduzione

Google, Yahoo e Bing hanno annunciato congiuntamente il supporto a rel canonical — il primo standard SEO condiviso dall'intero settore

~60%

Siti con duplicati

Secondo Ahrefs, circa il 60% dei siti ha pagine con contenuti duplicati che richiedono un canonical

3

Motori di ricerca

Google, Yandex e Bing supportano rel canonical. È un suggerimento, non una direttiva: il motore lo segue nella maggior parte dei casi, ma non sempre

≠ 301

Non è un redirect

Canonical è un suggerimento per il motore di ricerca, non un redirect per l'utente. La pagina duplicata resta raggiungibile al proprio URL

Canonical: significato e concetto di base

La parola «canonical» arriva sul web dalla matematica e dalla logica: la forma canonica è la rappresentazione più semplice e standard di un oggetto. Nel contesto degli URL, l'indirizzo canonical è il link «ufficiale» che il motore di ricerca usa per posizionamento e indicizzazione, mentre tutte le altre versioni vengono trattate come duplicate.

Canonical e redirect 301 vengono spesso confusi. La differenza chiave: un redirect è una direttiva, canonical è un suggerimento. Un redirect porta fisicamente l'utente su un nuovo URL. Canonical lascia l'utente sulla pagina originale ma dice al motore di ricerca quale URL considerare principale ai fini dell'indicizzazione.

Criteriorel="canonical"Redirect 301
Tipo di segnaleSuggerimentoDirettiva
Cosa vede l'utenteL'URL della pagina duplicataL'URL di destinazione (principale)
Cosa indicizza il motoreSolo l'URL canonicalSolo l'URL di destinazione
Trasferimento del valore dei linkParziale (non 100%)Pieno (~99%)
Entrambi gli URL raggiungibiliSìNo — il duplicato restituisce 301
Caso d'usoDuplicati, filtri, paginazioneSpostamento permanente di una pagina

Come inserire il tag canonical

Il tag canonical va nella sezione <head> della pagina duplicata. La sintassi non cambia dal 2009 — è un singolo elemento <link> void. Ricorda che l'attributo href deve contenere un URL assoluto completo:

html
<head>
  <meta charset="UTF-8">
  <title>Laptops — buy at TechShop</title>
  <link rel="canonical" href="https://example.com/catalog/laptops/">
</head>
Errore comune: alcuni scrivono <meta rel="canonical"> o <meta name="canonical"> — quel tag non esiste. L'unica forma corretta è <link rel="canonical" href="..."> dentro <head>. La variante meta viene ignorata del tutto dai motori di ricerca.

Se la pagina è un PDF, un'immagine o un altro file senza <head> HTML, il canonical può essere inviato tramite l'header HTTP Link. La configurazione nginx qui sotto funziona sia per risorse non HTML sia per pagine normali quando controlli direttamente il server:

nginx
# nginx.conf — canonical via HTTP header
# For PDF and other non-HTML resources:
location ~* \.pdf$ {
    add_header Link '<https://example.com/docs/price-list.pdf>; rel="canonical"';
}

# For dynamic URLs with GET parameters:
location /catalog/ {
    add_header Link '<https://example.com/catalog/>; rel="canonical"';
}

Cinque regole del canonical che vengono violate più spesso:

  • Solo URL assoluti. Scrivi sempre l'indirizzo completo: https://example.com/page/, non /page/. I canonical relativi sono tecnicamente supportati ma si comportano male quando cambia dominio o protocollo.
  • rel canonical https. Il canonical deve puntare alla versione https della pagina. Se il sito è in HTTPS ma il canonical punta a http://, crei un duplicato che il motore non riesce a risolvere correttamente.
  • Un solo canonical per pagina. Più tag <link rel="canonical"> con href diversi — il motore di ricerca li ignora tutti o ne sceglie uno a caso.
  • Il canonical deve essere raggiungibile. Un tag che punta a un URL 404 o 301 non ha senso. La pagina principale deve restituire 200 OK.
  • Slash finale coerente. Se l'URL principale è /catalog/ (con slash), anche il canonical deve includere lo slash. Mescolare le varianti crea nuovi duplicati.
L'autoreferenzialità del canonical è normale e persino consigliata. Il canonical di una pagina può puntare a se stessa — è un segnale esplicito al motore che questo URL è quello principale. Aggiungi il self-canonical a ogni pagina del sito, incluse le pagine principali.

Quando usare canonical

Canonical risolve sei scenari classici di duplicazione dei contenuti. Ecco ciascuno con esempi di URL reali.

Scenario 1Parametri GET e tag UTM

URL come /catalog/?sort=price e /catalog/?utm_source=email contengono lo stesso contenuto di /catalog/. Il canonical di tutte queste pagine deve puntare a /catalog/. È la fonte di duplicati più diffusa negli e-commerce.

Scenario 2Canonical e paginazione

Pagine come /blog/page/2/ e /blog/page/3/ contengono contenuti unici, quindi la paginazione con canonical di norma significa self-canonical su ogni pagina. Non puntare tutte le pagine paginate alla pagina 1 — così nascondi contenuti unici all'indicizzazione.

Scenario 3Filtri e ordinamento

Una pagina categoria con filtri può generare centinaia di URL: /shoes/?color=red&size=42. Se una pagina filtro ha contenuti unici e domanda di ricerca, indicizzala. Se è un duplicato della categoria padre — canonical verso /shoes/.

Scenario 4www, http/https, maiuscole

Quattro varianti della homepage: http://example.com, https://example.com, http://www.example.com, https://www.example.com. Scegline una principale (meglio https://example.com senza www) e imposta canonical + 301 da tutte le altre.

Scenario 5Canonical cross-domain

Se il tuo articolo è stato ripubblicato su un sito partner (sindacazione, mirror), chiedi al partner di aggiungere un canonical che punta al tuo originale. Google supporta il canonical cross-domain — tratta il tuo dominio come fonte e trasferisce il valore dei link.

Scenario 6Pagina non canonical e aggregatori

Se la tua pagina compare su più aggregatori senza il tuo intervento, aggiungi un self-canonical all'originale. Quando sceglie la versione principale fra i duplicati, Google dà priorità agli URL con un self-canonical esplicito.

Non canonical non è un errore — è uno stato. Lo stato Google Search Console «Alternate page with proper canonical tag» significa che Google ha accettato il tuo canonical e non sta indicizzando il duplicato. È il risultato atteso per le pagine de-canonicalizzate intenzionalmente.

Canonical nelle CMS: WordPress, Bitrix e Tilda

Le CMS più diffuse generano i canonical automaticamente o offrono uno strumento integrato. La configurazione manuale serve solo per scenari non standard o quando la CMS non li gestisce correttamente.

WordPress

I plugin Yoast SEO e Rank Math aggiungono automaticamente un <link rel="canonical"> autoreferenziale per ogni pagina e post. Se non usi questi plugin, aggiungi quanto segue al functions.php del tuo tema:

php
<?php
// functions.php — canonical without an SEO plugin
add_action('wp_head', function() {
    if (is_singular()) {
        echo '<link rel="canonical" href="' . esc_url(get_permalink()) . '">' . "\n";
    } elseif (is_home() || is_front_page()) {
        echo '<link rel="canonical" href="' . esc_url(home_url('/')) . '">' . "\n";
    }
}, 1);

Bitrix

In 1C-Bitrix il canonical si imposta tramite le proprietà della pagina. L'approccio standard è assegnare il valore in un componente e stamparlo nel header.php del template principale:

php
<?php
// In a component or init.php: set the canonical
$canonicalUrl = 'https://' . SITE_SERVER_NAME . $APPLICATION->GetCurPage(false);
$APPLICATION->SetPageProperty('canonical', $canonicalUrl);

// In the template's header.php: output the tag
$canonical = $APPLICATION->GetPageProperty('canonical');
if ($canonical):
?><link rel="canonical" href="<?= htmlspecialchars($canonical, ENT_QUOTES, 'UTF-8') ?>">
<?php endif; ?>

Tilda

Tilda: per ogni pagina, apri Impostazioni pagina → scheda SEO → campo Canonical URL. Tilda inserisce il tag in <head> automaticamente. Per canonical cross-domain o casi particolari, usa uno Zero Block con un inserimento HTML in <head>.

Errori e verifica con Google Search Console

Google Search Console è lo strumento principale per monitorare lo stato del canonical. Nel report Indicizzazione → Pagine vedrai diversi stati legati al canonical:

Stato GSCCosa significaCosa fare
Alternate page with proper canonical tagGoogle ha accettato il tuo canonical. Il duplicato non è indicizzato; il valore dei link passa alla pagina principaleTutto corretto — è il comportamento atteso
Duplicate, Google chose different canonical than userGoogle ha ignorato il tuo canonical e ha scelto un altro URL come principaleVerifica: URL assoluto? Nessun 301? Contenuti identici su entrambe le pagine?
Duplicate without user-selected canonicalIl motore ha trovato pagine simili senza canonicalAggiungi il tag canonical a tutte le pagine duplicate
IndexedPagina accettata nell'indice come principale (self-canonical o scelta esplicita)Normale per le pagine principali

Oltre a GSC, verifica il canonical a livello di risposta HTTP. Il metodo più rapido senza strumenti è il sorgente della pagina nel browser (Ctrl+U → cerca canonical) oppure curl:

bash
# Check canonical in HTTP header:
curl -sI https://example.com/catalog/?sort=price | grep -i link

# Check canonical in HTML (first 2000 bytes of response):
curl -s https://example.com/page/ | head -c 2000 | grep -i canonical
Errori comuni di configurazione del canonical:
  • Catene di canonical. Pagina A → canonical B → canonical C. I motori di ricerca preferiscono i puntamenti diretti. Assicurati che il canonical porti dritto all'URL principale finale, senza salti intermedi.
  • Canonical che punta a un redirect. Un canonical verso un URL in 301 manda un segnale ambiguo. Il motore deve seguire la catena — è più pulito puntare direttamente all'URL finale.
  • Noindex + canonical — una contraddizione. Una pagina con sia noindex sia canonical manda segnali conflittuali. Scegli uno dei due: oppure metti noindex alla pagina, oppure imposta il canonical verso l'URL principale.
  • Canonical via JavaScript. Google riesce a processare i tag canonical iniettati da JS, ma è più lento e meno affidabile. Preferisci sempre un <link> statico in <head> HTML.
Verifica rapida senza strumenti: apri una pagina qualsiasi, premi Ctrl+U (sorgente pagina), cerca canonical. Se il tag non è dentro <head> — c'è un problema di template. Se il canonical punta a un 404 o a un dominio esterno inatteso — errore di configurazione critico.

FAQ

Le risposte alle domande più frequenti sul canonical che emergono negli audit SEO.

In sintesi

Quando e come usare rel=canonical nella pratica.

Il tag canonical è uno degli strumenti fondamentali della SEO tecnica. È semplice da implementare, eppure causa regolarmente seri problemi di indicizzazione quando è configurato male o manca su siti con generazione dinamica di URL. Tre regole base — URL assoluto, rel canonical https, niente catene — sistemano l'80% degli errori possibili.

Inizia verificando lo stato attuale: GSC → report Pagine → filtra per gli stati «Duplicates» e «Not indexed». Così vedi subito dove il canonical manca o viene ignorato dal motore di ricerca.

Qual è la differenza fra canonical e redirect 301?
Il 301 è una direttiva: sia l'utente sia il motore di ricerca si spostano fisicamente sul nuovo URL, e il vecchio smette di esistere. Canonical è un suggerimento: l'utente resta sull'URL corrente mentre il motore considera solo il canonical per l'indicizzazione. Usa il 301 quando una pagina si è spostata per sempre. Usa canonical quando lo stesso contenuto è volutamente disponibile su più URL contemporaneamente.
Posso puntare un canonical a una pagina su un altro dominio?
Sì. Il canonical cross-domain è supportato sia da Google sia da Yandex. Ad esempio, se il tuo articolo è stato ripubblicato su un sito partner, chiedi al partner di aggiungere <link rel="canonical" href="https://your-site.com/article/">. Google trasferirà il valore dei link e l'attribuzione del contenuto al tuo dominio.
Perché Google ignora il mio canonical?
I motori ignorano il canonical per diversi motivi: (1) l'URL canonical differisce dal duplicato nei contenuti; (2) il canonical punta a un redirect o a un URL non raggiungibile; (3) la maggior parte dei link in entrata punta all'URL duplicato anziché al canonical; (4) le pagine sono raggiungibili con e senza www senza un redirect 301 verso la versione principale.
Come verifico il canonical senza un crawler?
Tre metodi: (1) Sorgente pagina — Ctrl+U, cerca canonical. (2) Chrome DevTools — scheda Elements, cerca <link rel. (3) Google Search Console — report Pagine → clicca un URL → nel pannello laterale trovi sia il campo «Google-selected canonical» sia «User-declared canonical».
Come correggo lo stato «alternate page with proper canonical tag» in GSC?
Questo stato non va corretto — significa che il tuo canonical funziona: Google ha riconosciuto la pagina come duplicata e non la indicizza. Se vuoi che la pagina venga indicizzata in modo indipendente, rimuovi il canonical o sostituiscilo con un self-canonical (che punta a se stesso).

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it