Cos'è il canonical per i filtri
Negli e-commerce e nelle directory i filtri generano un numero enorme di URL con contenuti identici o parzialmente modificati. Per esempio, la categoria «Scarpe» può avere filtri per brand, taglia, colore, prezzo. Le combinazioni di parametri possono creare centinaia di migliaia di varianti di pagina. Il problema: i bot sprecano crawl budget su tutti questi duplicati, mentre gli utenti visitano raramente le combinazioni impopolari. La soluzione è impostare dinamicamente il canonical in base alla domanda per la combinazione.
Strategia decisionale
Dividi tutte le combinazioni di filtri in tre categorie:
- Domanda alta: combinazioni con query di ricerca regolari (per esempio «scarpe Nike»). Imposta un canonical autoreferenziale.
- Domanda media: combinazioni cercate a volte ma non spesso. Possono mantenere il self-canonical, ma monitora il crawl budget.
- Domanda bassa o zero: combinazioni che nessuno cerca. Imposta il canonical verso la categoria padre (senza filtri).
Example decision table for the /shoes/ category:
URL Demand Canonical
/shoes/ High self
/shoes/?brand=nike High self
/shoes/?brand=nike&color=red Medium self
/shoes/?brand=nike&color=red&size=42 Low /shoes/
/shoes/?brand=nike&color=red&size=42&sort=price_asc Low /shoes/Implementazione tecnica
Devi determinare lato server se l'attuale combinazione di filtri è popolare. Il modo più semplice è mantenere una whitelist di combinazioni nel codice o in un database.
<?php
// Example PHP logic
$popularCombinations = [
'brand=nike',
'brand=adidas',
'color=black',
'brand=nike&color=black'
];
$currentFilters = http_build_query($_GET); // 'brand=nike&color=red&size=42'
if (in_array($currentFilters, $popularCombinations)) {
$canonical = 'https://example.com/shoes/?' . $currentFilters;
} else {
$canonical = 'https://example.com/shoes/';
}
?>
<link rel="canonical" href="<?= htmlspecialchars($canonical) ?>" />Un approccio più avanzato usa i dati di Google Search Console e Analytics. Le combinazioni che portano clic e impression mantengono il self-canonical; le altre puntano alla pagina di categoria.
Approcci alternativi
- Filtri JavaScript senza cambio di URL: il filtraggio avviene lato client e l'URL resta lo stesso. Nessun problema di duplicati, ma non puoi indicizzare le combinazioni popolari come pagine separate.
- noindex per le combinazioni impopolari: blocca l'indicizzazione via meta robots. Svantaggio: perdita di valore dei link.
- nofollow sui link dei filtri: dice ai bot di non seguire i link verso combinazioni impopolari (con rel="nofollow"). Non sempre efficace, perché i bot possono comunque trovarle.