SEO tecnica WordPress: crawl budget, indicizzazione e il mito del 100/100

Il crawl budget non è un problema per i siti piccoli, ma lo diventa per i grandi. Come ottimizzare l'indicizzazione su WordPress: robots.txt, sitemap, canonical, noindex strategico, e perché inseguire il 100/100 su Lighthouse è una perdita di tempo.
La SEO tecnica su WordPress è un campo dove l'ossessione per i punteggi numerici ha superato la comprensione di cosa conta davvero. Sentiamo costantemente clienti preoccupati perché Lighthouse dà 88 invece di 100, o perché una pagina non è indicizzata in 24 ore. La verità è che il 100/100 su Lighthouse non è un obiettivo — è un'illusione che consuma tempo senza produrre posizionamento. La SEO tecnica che conta è quella che aiuta Google a capire e indicizzare il sito, non quella che rincorre un punteggio.
Il crawl budget è il concetto più frainteso. Google non indicizza tutto ciò che trova: ha un budget di risorse per ogni sito, e se lo spreca su pagine inutili, le pagine importanti vengono indicizzate più lentamente. Per un sito con 50 pagine, il crawl budget non è un problema — Google le indicizza tutte. Per un e-commerce con 10.000 prodotti, di cui 3.000 sono fuori produzione o duplicati, il crawl budget è il collo di bottiglia che decide quali pagine arrivano in indice e quali no.
Robots.txt: cosa bloccare e cosa no
Il robots.txt è il primo strumento di gestione del crawl budget, ma è anche il più usato male. L'errore comune è bloccare tutto ciò che sembra inutile — cartelle di plugin, file di admin, feed. Ma bloccare troppo impedisce a Google di trovare risorse necessarie, come CSS e JavaScript per il rendering. Ecco un robots.txt bilanciato per WordPress:
# robots.txt — WordPress ottimizzato per crawl budget
User-agent: *
# Blocca solo ciò che non ha valore SEO
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /*/feed/$
Disallow: /*/feed/rss/$
Disallow: /*/feed/atom/$
Disallow: /?s= # risultati di ricerca interni
Disallow: /search/ # pagine di ricerca alternative
# NON bloccare questi (errore comune):
# Disallow: /wp-content/ ← blocca CSS/JS, rompe il rendering
# Disallow: /wp-includes/ ← stesso problema
# Disallow: /*.css$ ← blocca i fogli di stile
# Disallow: /*.js$ ← blocca gli script
# Permetti l'accesso alle sitemap
Sitemap: https://www.example.com/sitemap.xml
# Se hai pagine di filtraggio e-commerce che generano URL duplicati:
# Disallow: /shop/*?orderby= # ordinamento
# Disallow: /shop/*?filter= # filtri (usa canonical invece se possibile)Sitemap XML: la mappa che guida Google
La sitemap XML è l'elenco delle pagine che vuoi che Google indicizzi. Su WordPress, il meglio è generare una sitemap dinamica che si aggiorna automaticamente quando pubblichi o modifichi contenuti. La sitemap deve includere solo le pagine che vuoi indicizzare — niente pagine noindex, niente pagine di stato bozza, niente pagine duplicate:
<?php
// Sitemap XML dinamica per WordPress (semplificata)
// Genera /sitemap.xml con tutti i post e pagine pubblicati
add_action( 'init', function() {
add_rewrite_rule( '^sitemap\.xml$', 'index.php?custom_sitemap=1', 'top' );
} );
add_filter( 'query_vars', function( $vars ) {
$vars[] = 'custom_sitemap';
return $vars;
} );
add_action( 'template_redirect', function() {
if ( ! get_query_var( 'custom_sitemap' ) ) return;
header( 'Content-Type: application/xml; charset=utf-8' );
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
// Pagine statiche
$pages = get_pages( array( 'post_status' => 'publish' ) );
foreach ( $pages as $page ) {
echo ' <url><loc>' . get_permalink( $page->ID ) . '</loc>';
echo '<lastmod>' . get_the_modified_date( 'c', $page ) . '</lastmod></url>' . "\n";
}
// Post
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'publish' ) );
foreach ( $posts as $post ) {
echo ' <url><loc>' . get_permalink( $post->ID ) . '</loc>';
echo '<lastmod>' . get_the_modified_date( 'c', $post ) . '</lastmod></url>' . "\n";
}
echo '</urlset>';
exit;
} );Canonical e noindex: la gestione delle duplicazioni
WordPress genera naturalmente URL duplicati: lo stesso post accessibile da /categoria/post/, /tag/post/, /post/, /2026/10/post/. Per Google, ogni URL è una pagina diversa — e i duplicati diluiscono il valore SEO. La soluzione è il tag canonical, che dice a Google 'questa è la versione principale, ignora le altre'. E il noindex, che dice 'non indicizzare questa pagina'.
<?php
// Canonical e noindex strategici per WordPress
// 1. Canonical su tutte le pagine (WordPress lo fa di default dal 4.6)
// Verifica che il tema non lo rimuova:
remove_filter( 'wp_head', 'rel_canonical' ); // ← NON fare questo
// 2. Noindex su pagine che non vuoi in indice
add_action( 'wp_head', function() {
// Pagine di ricerca interna (generano URL duplicati)
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
// Pagine di tag (spesso thin content, duplicati delle categorie)
if ( is_tag() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
// Pagine autore (se non hanno contenuti propri)
if ( is_author() && ! have_posts() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
// Pagine paginate (la pagina 2+ non ha valore SEO separato)
if ( is_paged() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );
// 3. Canonical custom per pagine con parametri (es. e-commerce)
add_filter( 'wpseo_canonical', function( $canonical ) {
// Rimuovi parametri di ordinamento/filtraggio dal canonical
if ( isset( $_GET['orderby'] ) || isset( $_GET['filter'] ) ) {
$canonical = strtok( $canonical, '?' );
}
return $canonical;
} );Il mito del 100/100 e cosa conta davvero
Il 100/100 su Lighthouse è un'ossessione che non produce posizionamento. Lighthouse misura performance tecnica, non SEO. Un sito con 100/100 su Lighthouse ma contenuti thin, senza backlink, senza autorità, non posiziona. Un sito con 85/100 ma contenuti eccellenti, struttura tecnica corretta, e autorità nel settore posiziona meglio. Il punteggio Lighthouse è un indicatore, non un obiettivo.
Quello che conta per la SEO tecnica è: che Google possa indicizzare le pagine importanti (sitemap + robots.txt corretti), che non ci siano duplicazioni (canonical + noindex), che il sito sia veloce per gli utenti reali (Core Web Vitals sul campo, non il test di laboratorio), e che la struttura degli heading sia logica. Questi sono i fattori che muovono le posizioni. Il 100/100 è il punteggio che si rincorre quando non si sa cosa altro fare — e il tempo speso a rincorrerlo è tempo tolto ai contenuti e alla struttura, che sono ciò che davvero conta.
Misura LCP, INP e CLS sui tuoi utenti reali, non su un test di laboratorio.
Un audit Core Web Vitals identifica esattamente cosa rallenta il tuo sito e dove intervenire con priorità.
Articoli correlati

Transient API e database WordPress: quando la cache applicativa diventa un problema
Leggi
Page builder vs codice custom in WordPress: quando Elementor costa più di quanto risparmi
Leggi
