Salta al contenuto principale
Sistemi Attivi
WP Planet — WordPress Cloud & Managed Services
Torna al MagazinePerformance

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

03 Nov 2026 — 15:20 9 min di lettura
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:

.htaccess
# 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)
Nota: Non bloccare mai /wp-content/ o /wp-includes/ nel robots.txt. Google ha bisogno di caricare CSS e JavaScript per renderizzare la pagina come la vede l'utente. Se li blocchi, Google vede una versione degradata del sito e potrebbe penalizzarlo. Usa il parametro noindex nei casi specifici, non il blocco globale.

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:

wp-config.php
<?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;
} );
Nota: Per siti complessi, usa un plugin come Yoast SEO o Rank Math che genera sitemap segmentate (post, pagine, categorie, prodotti WooCommerce) con priorità e frequenza di aggiornamento. Una sitemap con 10.000 URL in un solo file è lenta da processare; sitemap segmentate con meno di 1.000 URL ciascuna sono più efficienti.

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'.

wp-config.php
<?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;
} );
Nota: Usa noindex,follow (non noindex,nofollow): 'follow' dice a Google di seguire comunque i link nella pagina, trasferendo valore SEO alle pagine collegate. 'nofollow' blocca anche i link, il che è quasi sempre sbagliato per le pagine interne. Il noindex è per pagine che non meritano un'entry in indice, non per pagine che non vuoi linkare.

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.

Audit Core Web Vitals

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à.

Audit Core Web Vitals
Condividi