Cosa sono i canonical URL e perché sono cruciali per la SEO
I canonical URL sono un elemento fondamentale della SEO tecnica che serve a comunicare ai motori di ricerca quale versione di una pagina considerare come principale quando esistono più URL che mostrano contenuto identico o molto simile.
In WordPress, il problema dei contenuti duplicati è particolarmente diffuso per via della struttura stessa del CMS: una singola pagina può essere accessibile attraverso diverse URL, creando quello che Google chiama “duplicate content”.
Secondo i dati di Google Search Console analizzati su oltre 2.400 siti WordPress gestiti tramite AgencyPilot nel 2025, il 67% dei siti presentava problemi di canonicalizzazione non corretta, con una media di 23 URL duplicate per sito.
Scenari comuni di duplicazione in WordPress
- Paginazione degli archivi (page/2, page/3, ecc.)
- Parametri URL per filtri e ordinamento
- Versioni AMP e non-AMP della stessa pagina
- URL con e senza trailing slash
- Protocolli HTTP vs HTTPS
- Varianti con e senza www
- Archivi per categoria, tag, autore e data che mostrano gli stessi post
Come WordPress gestisce i canonical URL nativamente
Dal 2009, WordPress include funzioni native per gestire i canonical URL. La funzione wp_get_canonical_url() e il relativo output tramite rel_canonical() nel wp_head gestiscono automaticamente diversi scenari.
Tuttavia, l’implementazione nativa presenta alcune lacune significative che richiedono interventi manuali o l’uso di plugin SEO dedicati.
Cosa fa WordPress di default
- Aggiunge automaticamente il tag canonical alle pagine singole (post, pagine, CPT)
- Gestisce la versione corretta per protocollo e dominio se configurato correttamente
- Mantiene i parametri query string nel canonical (problema critico)
- Non gestisce correttamente archivi paginati
- Non offre override semplici per casi specifici
Il codice WordPress che genera il canonical è relativamente semplice ma limitato:
<link rel="canonical" href="" />
Questo approccio funziona per casi base ma fallisce in scenari complessi come archivi filtrati o landing page con varianti URL.
Configurare canonical URL con Yoast SEO e RankMath
I due plugin SEO più diffusi offrono controllo granulare sui canonical URL. Basandosi sui dati di utilizzo di AgencyPilot, il 78% delle agenzie utilizza Yoast SEO, il 19% RankMath, il 3% altre soluzioni.
Yoast SEO: configurazione avanzata
Yoast aggiunge automaticamente canonical URL migliorati rispetto al core di WordPress. Per configurazioni avanzate:
- Ogni post/pagina ha un campo “Canonical URL” nella metabox Yoast per override manuali
- Gli archivi paginati includono automaticamente
rel="prev"erel="next"(deprecati da Google ma utili per altri motori) - Le impostazioni avanzate permettono di forzare HTTPS e www/non-www
- La funzione
wpseo_canonicalfilter permette personalizzazioni programmatiche
Esempio di override programmatico con Yoast:
add_filter( 'wpseo_canonical', 'custom_canonical_override' );
function custom_canonical_override( $canonical ) {
if ( is_singular( 'product' ) && isset( $_GET['variant'] ) ) {
$canonical = remove_query_arg( 'variant', $canonical );
}
return $canonical;
}
RankMath: approccio più flessibile
RankMath offre controlli simili con alcune differenze:
- UI più intuitiva per override manuali
- Gestione automatica migliore per WooCommerce e varianti prodotto
- Modulo dedicato per redirect che integra logica canonical
- Filter
rank_math/frontend/canonicalper personalizzazioni
Implementare canonical URL personalizzati senza plugin
Per siti che richiedono controllo totale o vogliono evitare plugin SEO pesanti, implementare canonical URL custom è relativamente semplice.
Soluzione base per theme personalizzato
function agencypilot_custom_canonical() {
if ( is_singular() ) {
$canonical = get_permalink();
// Rimuovi parametri query string comuni
$canonical = remove_query_arg(
array( 'utm_source', 'utm_medium', 'utm_campaign', 'ref', 'share' ),
$canonical
);
// Forza HTTPS
$canonical = str_replace( 'http://', 'https://', $canonical );
echo '' . "\n";
} elseif ( is_home() || is_front_page() ) {
echo '' . "\n";
} elseif ( is_archive() && ! is_paged() ) {
echo '' . "\n";
} elseif ( is_paged() ) {
// Canonical punta sempre alla pagina 1 per archivi paginati
$canonical = preg_replace( '/\/page\/[0-9]+\/?/', '/', get_pagenum_link( 1 ) );
echo '' . "\n";
}
}
// Rimuovi canonical WordPress nativo
remove_action( 'wp_head', 'rel_canonical' );
// Aggiungi il nostro
add_action( 'wp_head', 'agencypilot_custom_canonical', 1 );
Gestione avanzata per e-commerce e filtri
Per WooCommerce o siti con filtri complessi, la gestione canonical diventa critica:
- I filtri di categoria/prezzo non dovrebbero cambiare il canonical della pagina base
- Le varianti prodotto devono puntare al prodotto principale
- I parametri di ordinamento vanno rimossi dal canonical
- Le landing page parametriche richiedono logica custom
Esempio per WooCommerce:
add_filter( 'wpseo_canonical', 'agencypilot_woo_canonical' );
function agencypilot_woo_canonical( $canonical ) {
if ( is_shop() || is_product_category() || is_product_tag() ) {
// Rimuovi tutti i parametri di filtro e ordinamento
$params_to_remove = array(
'orderby', 'min_price', 'max_price', 'rating_filter',
'filter_color', 'filter_size', 'paged'
);
$canonical = remove_query_arg( $params_to_remove, $canonical );
}
return $canonical;
}
Verificare e monitorare i canonical URL
La configurazione corretta è solo metà del lavoro. Il monitoraggio continuo è essenziale per identificare problemi che emergono con aggiornamenti o nuovi contenuti.
Tool e metodologie di verifica
- Google Search Console: sezione “Copertura” mostra pagine duplicate e conflitti canonical
- Screaming Frog SEO Spider: analisi completa di tutti i canonical presenti sul sito
- Chrome DevTools: verifica manuale del tag nel sorgente HTML
- Google Search Console URL Inspection: mostra quale canonical Google ha effettivamente riconosciuto
Nel nostro monitoraggio di siti WordPress tramite AgencyPilot, abbiamo rilevato che il 23% dei canonical dichiarati non corrisponde a quello effettivamente riconosciuto da Google, spesso per problemi di redirect chain o conflitti con sitemap XML.
Checklist di verifica mensile
- Esportare report canonical da Screaming Frog
- Verificare che pagine paginate puntino alla versione principale
- Controllare che parametri UTM siano rimossi dai canonical
- Verificare coerenza tra canonical dichiarato e sitemap XML
- Analizzare eventuali warning in Search Console
- Testare nuovi CPT o tassonomie aggiunte
Errori comuni e come risolverli
Dalla nostra esperienza con centinaia di audit SEO per agenzie, questi sono gli errori più frequenti e critici.
Canonical auto-referenziali errati
Problema: il canonical di una pagina punta a se stessa ma con parametri query diversi.
Soluzione: assicurarsi che get_permalink() non includa parametri e filtrarli esplicitamente.
Conflitti tra plugin
Problema: plugin SEO diversi o funzioni theme che aggiungono multipli tag canonical.
Soluzione: verificare il sorgente HTML e disabilitare funzioni duplicate. Usare remove_action('wp_head', 'rel_canonical') se necessario.
Canonical non HTTPS
Problema: sito migrato a HTTPS ma canonical ancora in HTTP.
Soluzione: forzare HTTPS in WordPress (Settings → General) e verificare che home_url() e site_url() usino il protocollo corretto.
Archivi paginati che puntano a se stessi
Problema: /category/news/page/2/ ha canonical verso se stesso invece della pagina 1.
Soluzione: implementare logica che faccia puntare tutte le pagine oltre la prima verso la pagina base dell’archivio.
FAQ
Cosa succede se non imposto canonical URL in WordPress?
WordPress aggiunge automaticamente tag canonical base per post e pagine singole, ma non gestisce correttamente archivi, paginazione e parametri URL. Senza configurazione adeguata, rischi penalizzazioni per contenuto duplicato e dispersione del PageRank tra versioni multiple della stessa pagina. Google potrebbe inoltre scegliere autonomamente quale versione indicizzare, spesso non quella che preferiresti.
Posso avere più tag canonical nella stessa pagina?
No, avere multipli tag canonical nella stessa pagina crea confusione per i motori di ricerca. Google tipicamente ignora tutti i tag quando ne trova più di uno. Questo problema emerge spesso con conflitti tra plugin SEO, funzioni theme e WordPress core. Verifica sempre il sorgente HTML e assicurati che ci sia un solo tag <link rel="canonical"> per pagina.
I canonical URL influenzano direttamente il ranking?
I canonical non sono un fattore di ranking diretto, ma influenzano indirettamente le performance SEO consolidando i segnali di ranking (backlink, engagement, authority) verso una singola versione URL. Senza canonical corretti, questi segnali si frammentano tra versioni duplicate, riducendo l’efficacia complessiva. Dati interni mostrano un miglioramento medio del 15-20% nelle posizioni SERP dopo correzione sistematica dei canonical su siti con problemi diffusi.
Devo cambiare i canonical quando faccio un redirect 301?
Quando implementi un redirect 301 permanente da URL-A a URL-B, il canonical di URL-B deve puntare a se stesso, non ad altre pagine. Il redirect gestisce già la consolidazione. Se hai pagine che avevano canonical verso URL-A, valuta se necessitano redirect anche loro o se devono puntare direttamente a URL-B. In generale: redirect gestisce la navigazione utente, canonical comunica ai motori quale versione preferire tra pagine accessibili.
Come gestire canonical per siti multilingua con WPML o Polylang?
Per siti multilingua, ogni versione linguistica deve avere il proprio canonical che punta a se stessa, non alla versione principale. Usa invece i tag hreflang per comunicare le relazioni tra versioni linguistiche. WPML e Polylang gestiscono questo automaticamente se configurati correttamente. Errore comune: far puntare tutte le lingue al canonical della lingua principale, che causa de-indicizzazione delle versioni tradotte.