Che cosa è il rel=canonical e come implementarlo


Dopo il mio intervento al convegno gt dello scorso anno moltissimi hanno chiesto chiarimenti su alcune slide presentate e uno di quelli più gettonati è stato relativo al rel=canonical.

Nel post di ieri abbiamo parlato di rel=author e di come implementarlo nel proprio sito seguendo semplici passi. Il rel=author seppur più complesso da comprendere a livello concettuale è molto semplice da applicare tecnicamente mentre invece per quanto riguarda il rel=canonical, se a livello concettuale risulta molto semplice a livello implementativo può diventare spesso un problema e in certi casi un rischio (se male implementato).

In questo post cercherò di fare un po’ di chiarezza in merito semplificando il più possibile la comprensione del rel=canonical ed evidenziando i possibili problemi di mancata comprensione più comuni.

Sebbene ci siano una serie di informazioni su tale rel in una pagina di google questa non risulta abbastanza esauriente in quanto il suo utilizzo se fatto in modo perfetto può diventare un vero e proprio elemento di pregio del nostro sito e  risolvere molti problemi tipici della maggior parte dei CMS custom presenti in giro.

Che cosa è una pagina canonica

La pagina canonica è la versione che a me piace chiamare “vera” di un contenuto all’interno dell’architettura informativa del proprio sito web. Detta così può sembrare incomprensibile, ma da buon SEO devo sempre tenere a mente che nel mio sito deve esistere una ed una sola URL che contiene un determinato contenuto.

Per renderla più semplice vi faccio alcuni esempi.

Esempio 1

Supponiamo di avere un cms che genera più URL per riordinare una tabella e dunque permette di ordinare per nome, cognome, città un elenco di nominativi.

Avremo uno scenario del seguente tipo.

URL canonical

Mantenere 3 URL differenti per lo stesso contenuto è assolutamente inutile e deleterio e in mancanza di alternative implementative il link rel=canonical è sicuramente uno dei migliori candidati per l’ottimizzazione di tale situazione.

Questo è un caso abbastanza banale, ma in casi di generazione esponenziale di URL il canonical può davvero essere la vostra ancora di salvezza verso una brutta fine certa dovuta ad una esplosione di contenuti leggeri, che nella migliore delle ipotesi succhierà energia a quelle pagine davvero importanti per il tuo sito.

Esempio 2

Non sempre i problemi sono in casa e infatti spesso per quanto google e gli altri motori di ricerca siano intelligenti capita che la nostra URL venga linkata dall’esterno in modi diversi per i più svariati motivi:

  • codice di tracking campagne appeso all’url
  • codice che feedburner appende all’url
  • link condivisi con tali parametri appesi
  • citazioni con aggiunte erronee all’url

e in questo caso il canonical diventa un grande aiuto perché ci offre una grande flessibilità nella gestione delle nostre URL senza fissare vincoli troppo stretti da indurre in 404 ogni variazione anche minima dell’URL e dunque garantendo all’applicativo la libertà di utilizzare tutti i tipi di servizi utili che necessitano di parametri senza inficiare la raggiungibilità del contenuto e senza causare inutili dispersioni di energia tra stessi contenuti.

Che cosa non è una pagina canonica

Sebbene gli esempi sopra dovrebbero chiarire il concetto di canonical spesso si è indotti nell’errore di attribuire al canonical in modo naif alcune stravaganti intuizioni.

La pagina canonica:

  • non è la pagina che sto visitando
  • non è la ‘REQUEST_URI
  • non è la home page del sito
  • non è equivalente al redirect 301

Come implementare il rel=canonical

Per definire la pagina canonica in modo che sia comprensibile ai motori di ricerca devi aggiungere un elemento <link> che contenga il rel=canonical e l’href dell’url da segnalare come primaria all’interno dei tag <head></head> della tua pagina web come segue:

<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="https://purl.org/NET/erdf/profile">
<title>....</title>
....
<link rel="canonical" href="https://www.example.com/elenco"/>
....
</head>
....

Lo stesso canonical dovrà essere utilizzato per tutte quelle pagine che non sono altro che duplicati di questa (per riprendere l’immagine dell’esempio 1) ossia:

  • www.example.com/elenco avrà come canonical https://www.example.com/elenco
  • www.example.com/elenco/nome avrà come canonical https://www.example.com/elenco
  • www.example.com/elenco/cognome avrà come canonical https://www.example.com/elenco

Banalmente per avere in modo veloce una pagina canonica univoca basterebbe avere associato nel proprio database una ed una sola URL ad ogni contenuto.

Uso del rel=canonical negli HTTP headers

Nel caso precedente abbiamo mostrato come utilizzare il canonical nelle pagine HTML, ma una delle cose più utili e fighe del rel=canonical è proprio la possibilità di utilizzarlo anche negli header HTTP delle risorse e dunque permette di definire il contenuto principale, ad esempio, nelle risorse PDF, swf, txt e tantissimi altri formati utilizzando la seguente sintassi:

Ipotetico file https://www.example.com/elenco.pdf

Nella sua intestazione inseriremo la seguente direttiva se vogliamo che la risorsa primaria sia la pagina html

Link: <https://www.example.com/elenco>; rel="canonical"

qualora ci fosse ad esempio una versione PDF dell’elenco di cui all’esempio 1.

Canonical multi dominio

Il canonical può essere utilizzato senza controindicazioni anche per post identici pubblicati su siti diversi come segue:

URL canonical multidominio

Quando è utile il canonical?

Secondo il mio parere il canonical è utile sempre a prescindere…un buon sito deve avere per ogni URL il suo canonical corretto per ridurre al minimo la possibilità di duplicazione anche al di fuori del nostro controllo e per avere un approccio conservativo delle risorse che produciamo.

Detto questo il canonical si presta molto bene a casi come:

  • siti che girano su più macchine dietro un load balancer e che sono ipoteticamente raggiungibili anche via IP diretto
  • siti che per loro natura sono nati male e girano su CMS fatti male
  • siti che presentano una notevole quantità di contenuti leggeri generati da ordinamenti e classificazioni degli stessi dati
  • siti che utilizzano vari formati di pubblicazione per lo stesso contenuto (pdf, doc, odf, etc etc…)
  • siti che utilizzano CDN (content delivery network)

Attenzione al canonical

Per sua definizione il canonical a detta di google funziona ‘per così dire’ a sentimento o interpretazione. Come avviene anche per schema.org Google si riserva la libertà di considerare il rel=canonical come un consiglio e promette di valutare caso per caso il valore effettivo del canonical lasciando intendere che in caso di errore nell’implementazione non c’è da preoccuparsi troppo in quanto è troppo intelligente…ma la realtà racconta una storia diversa e narrà di errori di canonicalizzazione disastrosi.

Il mio consiglio per l’occasione è quello di utilizzare il canonical, ma in modo maniacalmente perfetto.

Sei membro del forum? Vuoi scrivere anche tu su SEO Blog gt
Chiedilo a @giorgiotave