Sitemap XML: cos’è, a cosa serve davvero, e come farla bene
Indice contenuti:
La sitemap XML è uno dei primi file che un SEO controlla su un sito nuovo, ed è anche uno dei più fraintesi. Non fa rankare meglio, non è obbligatoria, e avere una sitemap sporca è peggio di non averla. Però, fatta bene, è lo strumento più efficiente per comunicare al motore di ricerca quali sono le URL canoniche del tuo sito e quando sono state aggiornate.
Cos’è una sitemap XML
È un file di testo in formato XML che elenca le URL del tuo sito che vuoi far conoscere ai motori di ricerca. Lo standard è definito da sitemaps.org ed è supportato da Google, Bing, Yandex e tutti i principali crawler.
Struttura minima:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://esempio.com/</loc>
<lastmod>2026-04-15</lastmod>
</url>
<url>
<loc>https://esempio.com/prodotti/scarpe-running</loc>
<lastmod>2026-04-10</lastmod>
</url>
</urlset>
Limiti tecnici imposti dal protocollo:
- Massimo 50.000 URL per file
- Massimo 50 MB non compresso (o 10 MB compresso in gzip)
- Oltre questi limiti: usi un sitemap index, cioè una sitemap di sitemap
Per siti grandi l’approccio corretto è partizionare per tipo di contenuto: sitemap-products.xml, sitemap-categories.xml, sitemap-posts.xml, tutti referenziati da un sitemap_index.xml.
Cosa fa (e cosa non fa) per la SEO
Cosa fa:
- Aiuta Google a scoprire URL che altrimenti sarebbero difficili da raggiungere tramite link interni (es. pagine orfane, prodotti molto profondi nella navigazione)
- Comunica la freshness tramite
lastmod: Google può decidere di ricrawlare prima le pagine aggiornate di recente - Serve come dichiarazione di canonicità: le URL in sitemap sono un forte segnale di quale versione di una pagina tu consideri quella giusta
Cosa NON fa:
- Non migliora il ranking di per sé. Una pagina non rankerà meglio perché è in sitemap. Googler ufficiali (John Mueller, Gary Illyes) lo hanno ripetuto decine di volte.
- Non garantisce l’indicizzazione. Google decide cosa indicizzare in base alla qualità percepita della pagina. Se una URL è in sitemap ma è thin content o duplicata, Google può tranquillamente ignorarla.
- Non sostituisce i link interni. Una pagina senza link interni che punta a lei è una pagina che Google considera poco importante, sitemap o non sitemap.
Regola pratica: la sitemap è un supporto alla scoperta, non un fattore di ranking.
Tipi di sitemap
Oltre alla sitemap “normale” delle URL, esistono tipi specializzati che uso quasi sempre quando il sito lo giustifica:
| Tipo | Quando ha senso | Note |
|---|---|---|
| Sitemap URL standard | Sempre | Base, obbligatoria di fatto |
| Sitemap immagini | Sito con molte immagini uniche (e-commerce, portfolio, magazine) | Aumenta la visibilità in Google Images |
| Sitemap video | Siti con video caricati sul proprio dominio | Richiede campi specifici: thumbnail_loc, duration, ecc. |
| Sitemap Google News | Solo se sei approvato come fonte Google News | Limite 1000 URL, solo contenuti pubblicati negli ultimi 2 giorni |
| Sitemap HTML | Per utenti, non per motori di ricerca | Oggi meno utile: un buon menu + breadcrumb la rendono ridondante |
Come si scrive una sitemap XML
I tag principali di ogni <url> sono quattro, ma solo due servono davvero:
<url>
<loc>https://esempio.com/pagina</loc> <!-- obbligatorio -->
<lastmod>2026-04-15T10:30:00+02:00</lastmod> <!-- utile -->
<changefreq>weekly</changefreq> <!-- ignorato da Google -->
<priority>0.8</priority> <!-- ignorato da Google -->
</url>
Regole assolute che, se violate, rendono la sitemap parzialmente o totalmente inutile:
- Solo URL canoniche. Niente URL con parametri di tracking (
?utm_*), niente URL con rel=”canonical” verso altre pagine, niente varianti http/https o www/non-www diverse dal dominio di riferimento. - Solo URL indicizzabili. Niente pagine in
noindex, niente pagine bloccate da robots.txt, niente 3xx, niente 4xx, niente 5xx. Ogni URL della sitemap deve restituire200 OKed essere indicizzabile. - URL assolute, non relative. Sempre con schema (
https://) e dominio. - Encoding UTF-8 e caratteri speciali escapati (
&→&).
Priority e changefreq: perché li puoi ignorare
Gary Illyes di Google ha dichiarato pubblicamente (nel podcast Search Off The Record e in vari post) che Google ignora completamente sia <priority> che <changefreq>.
Motivazione: sono stati compilati in modo talmente inaccurato e inflazionato dai webmaster (mezzo sito a priority 1.0) che Google ha smesso di considerarli. Oggi sono “rumore”.
Cosa fare in pratica:
- Se usi un plugin che li genera automaticamente: lasciali stare, non fanno danno
- Se li compili a mano: non perdere tempo, ometterli è meglio
- Se proprio li vuoi: usa una scala coerente e stabile (1.0 per homepage e pillar, 0.5 per il resto), ma sappi che è lavoro che Google non leggerà
Lastmod: l’unico tag che conta davvero
<lastmod> è l’unico segnale della sitemap che Google dichiara esplicitamente di usare, a condizione che sia credibile.
“Credibile” significa:
- Si aggiorna solo quando il contenuto della pagina cambia davvero
- Non si aggiorna a ogni rigenerazione del file (errore classico di CMS mal configurati)
- Non si aggiorna a ogni modifica irrilevante (es. update di un plugin, cambio footer)
Se Google rileva che tutte le URL del tuo sito hanno lastmod = oggi ogni volta che rilegge la sitemap, smette di fidarsi del segnale e lo ignora. Ho visto questo pattern su WordPress con plugin mal configurati: il risultato è zero beneficio di freshness.
Formato raccomandato: W3C Datetime, es. 2026-04-15T10:30:00+02:00. La data sola (2026-04-15) è comunque valida.
Come generarla
WordPress — Rank Math, Yoast SEO e The SEO Framework generano sitemap index automatiche, divise per post type. Rank Math è quello che preferisco perché l’output è pulito di default. Verifica sempre che:
- Pagine/post in
noindexsiano esclusi - Categorie vuote siano escluse
- Tag siano inclusi solo se hanno contenuto unico (altrimenti escludili)
Magento 2 — Sitemap nativa in Marketing > SEO & Search > Site Map. Problema comune: include di default tutte le pagine di prodotto, anche quelle disabilitate o con status = "not visible individually". Controlla.
Shopify — Sitemap generata automaticamente a /sitemap.xml. Non modificabile. Accetta il compromesso o usa un’app di terze parti.
Next.js / siti custom — Genera al build time (statica) o dinamicamente tramite una route handler. Esempio Next.js App Router:
// app/sitemap.xml/route.ts
import { getAllPosts } from '@/lib/posts'
export async function GET() {
const posts = await getAllPosts()
const urls = posts.map(p => `
<url>
<loc>https://esempio.com/${p.slug}</loc>
<lastmod>${p.updatedAt}</lastmod>
</url>`).join('')
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls}
</urlset>`
return new Response(xml, {
headers: { 'Content-Type': 'application/xml' }
})
}
Come inviarla a Google
Due canali, entrambi da usare:
1. Google Search Console → Sitemap → inserisci la URL (es. sitemap_index.xml) → Invia. Verifica dopo 24-48 ore: stato “Operazione riuscita”, numero di URL trovate coerente con quello reale, nessun errore di parsing.
2. Nel file robots.txt, riga finale:
Sitemap: https://esempio.com/sitemap_index.xml
Funziona per tutti i crawler che rispettano lo standard (Googlebot, Bingbot, ecc.).
Cosa non fare più: il “ping” via URL GET (https://www.google.com/ping?sitemap=...) è stato deprecato da Google nel giugno 2023. Non serve più, non funziona più.
Errori comuni che vedo sempre
Checklist in ordine di frequenza:
- [ ] URL in sitemap che restituiscono 404 o 301. Passale in Screaming Frog con modalità “List” sul file sitemap: qualsiasi riga non 200 è da pulire.
- [ ] URL in sitemap con
noindex. Tipicamente pagine di ringraziamento, archivi autore, tag. Segnale contraddittorio per Google: “voglio che la indicizzi / non voglio che la indicizzi”. - [ ] URL in sitemap canonicalizzate altrove. Stesso problema al contrario.
- [ ]
lastmoduguale per tutte le URL e aggiornato a ogni rigenerazione. Perde totalmente di significato. - [ ] Più sitemap per lo stesso contenuto (es. sitemap nativa del CMS + sitemap di un plugin). Decidi quale tenere, disabilita l’altra.
- [ ] Sitemap non linkata in
robots.txte non inviata in GSC. Esiste ma nessuno sa che esiste. - [ ] Sitemap con URL in www quando il dominio canonico è non-www (o viceversa). Controllo di 10 secondi che risolve problemi di crawl budget reali.
Takeaway
- La sitemap serve alla scoperta, non al ranking
- Tieni dentro solo URL canoniche, indicizzabili, 200 OK
- Ignora
priorityechangefreq, curalastmod - Per siti sopra i 50.000 URL: sitemap index + partizione per tipo di contenuto
- Controlla lo stato in Search Console ogni 2-4 settimane: una sitemap sporca peggiora il segnale, non lo migliora
