Sitemap XML: guida completa
Guida completa alla sitemap XML: attributi, Sitemap Index, mappe per immagini, video e news, hreflang per i siti localizzati e la riga in robots.txt.
Una sitemap XML è un file che consegni direttamente al crawler dei motori di ricerca invece di aspettare che scopra le pagine seguendo i link. Dici esplicitamente: «ecco la lista di URL che voglio indicizzare, ecco quando sono stati aggiornati l'ultima volta». Non è una garanzia di indicizzazione, ma accelera parecchio la scoperta e riduce lo spreco di crawl budget.
Il protocollo sitemaps.org è stato introdotto nel 2005 — Google lo ha adottato per primo, Yandex un anno dopo. Oggi tutti i principali motori di ricerca supportano lo standard.
Cos'è una sitemap XML e perché serve
Un bot dei motori scopre le pagine in due modi: seguendo i link interni e leggendo le sitemap. La scansione basata sui link funziona bene per le pagine con molti link in entrata. Ma le pagine senza alcun link, i contenuti appena pubblicati o le sezioni con link interni radi possono essere mancanti o scoperti troppo tardi. È esattamente lì che una sitemap aiuta.
Accelera la scansione
Il bot riceve la lista di URL direttamente, senza dover attraversare i link interni pagina per pagina.
Segnala gli aggiornamenti
L'attributo lastmod dice al motore di ricerca che una pagina è cambiata e va scansionata di nuovo.
Supporta i siti multilingue
Tramite xhtml:link puoi dichiarare le relazioni hreflang direttamente nella sitemap, senza duplicare i tag in HTML.
Struttura di base del file
Una sitemap valida minima è un file XML con la dichiarazione di codifica, un elemento radice urlset ed elementi url al suo interno. Ogni url deve contenere almeno un attributo obbligatorio — loc.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2026-05-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2026-04-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://example.com/blog/article-slug</loc>
<lastmod>2026-05-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
</urlset>Il file deve essere codificato in UTF-8. I caratteri speciali negli URL vengono escapati in XML: & diventa &, < diventa <. Un singolo file sitemap è limitato a 50.000 URL e 50 MB non compressi.
Attributi: loc, lastmod, changefreq, priority
| Attributo | Obbligatorio | Formato | Descrizione |
|---|---|---|---|
| loc | Sì | URL assoluto | Indirizzo completo della pagina con protocollo e dominio. Massimo 2048 caratteri. |
| lastmod | No | W3C Datetime (AAAA-MM-GG) | Data dell'ultima modifica. Google ci crede solo quando il valore è stabile e accurato. |
| changefreq | No | always / hourly / daily / weekly / monthly / yearly / never | Indicazione sulla frequenza di aggiornamento. Google la usa come un segnale fra molti, senza seguirla alla lettera. |
| priority | No | 0.0 — 1.0 | Importanza relativa dell'URL dentro il tuo sito. Non influisce sul posizionamento nei risultati. |
loc — l'unico attributo obbligatorio
L'URL deve essere assoluto e coincidere con ciò che il server restituisce davvero: se la pagina è servita in HTTPS, loc deve usare HTTPS. Se il sito usa www, loc deve includere www. Una discrepanza fra loc e l'indirizzo reale porta Google a ignorare la voce.
lastmod — l'attributo opzionale più prezioso
La data deve riflettere cambiamenti reali dei contenuti, non aggiornamenti del template o la rigenerazione della sitemap. Se aggiorni lastmod a ogni deploy senza toccare i contenuti, Google smette di fidarsi del campo e lo ignora. Formati accettati: 2026-05-15, 2026-05-15T10:30:00+03:00, 2026-05-15T07:30:00Z.
changefreq — un suggerimento, non una direttiva
changefreq non controlla la pianificazione del crawler — è solo un suggerimento. Google dichiara ufficialmente di usare il valore come uno dei tanti segnali. Anche Yandex tratta il campo come informativo. Default pratici: homepage — daily, articoli del blog — monthly, pagine legali — yearly.
priority — importanza relativa dentro il sito
La priorità da 0.0 a 1.0 dice al motore quali pagine consideri più importanti — in relazione al tuo sito, non agli altri. Mettere 1.0 a ogni pagina non ha senso: il motore lo tratta come assenza di priorità. Uno schema sensato: homepage 1.0, hub di sezione 0.85, articoli e prodotti 0.7–0.75, pagine di servizio 0.5.
Sitemap Index: quando un file non basta
Se hai più di 50.000 pagine o il file supera i 50 MB ti serve un Sitemap Index. È un file XML che referencia sitemap figlie anziché URL diretti. Ogni file figlio è un normale urlset, con un limite di 50.000 voci.
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap/blog.xml</loc>
<lastmod>2026-05-15T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/products.xml</loc>
<lastmod>2026-05-14T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/static.xml</loc>
<lastmod>2026-04-01T00:00:00Z</lastmod>
</sitemap>
</sitemapindex>Puoi suddividere per tipo di contenuto (blog, prodotti, pagine statiche) o per lingua (ru.xml, en.xml). Entrambi gli approcci sono validi. La suddivisione per lingua rende facile monitorare lo stato di indicizzazione separatamente per ogni lingua.
Sitemap immagini
Le immagini possono comparire in Google Immagini e portare traffico aggiuntivo. Per aiutare il crawler a scoprirle e capirle, aggiungi l'estensione image al tuo urlset. Ogni voce url può contenere fino a 1.000 immagini.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/gallery/city</loc>
<image:image>
<image:loc>https://example.com/images/city-skyline.jpg</image:loc>
<image:title>City skyline at sunset</image:title>
<image:caption>Downtown panorama taken from the observation deck, 2025</image:caption>
<image:geo_location>New York, USA</image:geo_location>
<image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
</image:image>
</url>
</urlset><url> e valori ammessi:| Tag | Obbligatorio | Descrizione |
|---|---|---|
| image:loc | Sì | URL assoluto dell'immagine. Può stare su un dominio diverso (ad es. una CDN). |
| image:title | No | Titolo dell'immagine. Equivalente all'attributo title di img. |
| image:caption | No | Didascalia dell'immagine. Equivalente all'attributo alt di img. |
| image:geo_location | No | Località geografica del soggetto nell'immagine. |
| image:license | No | URL della licenza dell'immagine. |
Le immagini nella sitemap non sostituiscono l'attributo alt in HTML — lavorano insieme. La sitemap aiuta il crawler a scoprire le immagini; alt ne descrive il significato.
Sitemap video
Una sitemap video permette ai tuoi contenuti di comparire nella ricerca Google Video e nei rich snippet con anteprime video. Il namespace è video.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/tutorials/getting-started</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbnails/tutorial-1.jpg</video:thumbnail_loc>
<video:title>Getting started with the product</video:title>
<video:description>Step-by-step guide for first-time users</video:description>
<video:content_loc>https://example.com/videos/tutorial-1.mp4</video:content_loc>
<video:duration>183</video:duration>
<video:publication_date>2026-03-10T12:00:00+00:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>
</urlset>video:duration è in secondi. video:content_loc deve puntare a un file riproducibile (mp4, webm), non a una pagina player. Per i video ospitati su YouTube o Vimeo usa video:player_loc al posto di video:content_loc.
Sitemap news
La Google News Sitemap è un formato speciale per gli editori che partecipano a Google News. Include solo gli articoli pubblicati nelle ultime 48 ore. I contenuti più vecchi non vanno inclusi — vengono esclusi automaticamente dall'indice delle notizie.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>https://example.com/news/tech-breakthrough-2026</loc>
<news:news>
<news:publication>
<news:name>Example Daily</news:name>
<news:language>en</news:language>
</news:publication>
<news:publication_date>2026-05-15T09:00:00+00:00</news:publication_date>
<news:title>Technology breakthrough set to transform the industry</news:title>
</news:news>
</url>
</urlset>Localizzazione: hreflang nelle sitemap
Se il tuo sito esiste in più lingue o per più regioni, devi collegare le pagine corrispondenti tramite hreflang. Si può fare in tre modi: con i tag link rel in HTML, con gli header HTTP Link, o direttamente nella sitemap. L'approccio via sitemap è il più pratico per i siti grandi perché non richiede modifiche ai template delle pagine.
Nella sitemap hreflang si dichiara tramite il namespace xhtml. Ogni pagina deve comparire come voce url, e ogni voce deve elencare tutte le varianti linguistiche — compresa se stessa.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Russian version -->
<url>
<loc>https://example.com/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
<!-- English version -->
<url>
<loc>https://example.com/en/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
</urlset>Il valore x-default indica la pagina di fallback — quella mostrata agli utenti che non corrispondono ad alcuna lingua dichiarata. In genere è la versione nella lingua principale del sito.
| Codice hreflang | Caso d'uso |
|---|---|
| ru | Lingua russa, qualsiasi regione |
| en | Lingua inglese, qualsiasi regione |
| en-US | Lingua inglese, regione USA |
| ru-RU | Lingua russa, regione Russia |
| x-default | Pagina di default per lingua/regione non determinata |
Robots.txt: basta una riga
Per far trovare la tua sitemap ai motori di ricerca, aggiungi una singola direttiva Sitemap a robots.txt. Se usi un Sitemap Index, punta a quello. Il crawler scopre tutti i file figlio tramite l'indice automaticamente.
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /
Sitemap: https://example.com/sitemap.xmlSe hai più file indice di root (ad es. uno separato per ru e en), puoi elencare più direttive Sitemap:
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xmlDocumentazione Google e Yandex
Documentazione ufficiale Google sulle sitemap
Documentazione ufficiale Yandex Webmaster sulla Sitemap
Yandex supporta lo standard sitemaps.org e in più l'estensione news. Yandex legge changefreq e priority ma raccomanda di concentrarsi su un lastmod accurato — conta di più per la nuova scansione delle pagine aggiornate.
Checklist
- Il file è codificato UTF-8 con <?xml version="1.0" encoding="UTF-8"?> sulla prima riga
- Tutti gli URL sono assoluti (con protocollo e dominio) e coincidono con il canonical reale
- HTTPS in loc quando il sito serve in HTTPS
- lastmod riflette la data reale di modifica dei contenuti — non la data di build
- Il file non supera 50.000 URL o 50 MB non compressi
- Per i siti grandi — Sitemap Index con file figlio
- Per le pagine multilingue — xhtml:link con hreflang, x-default incluso
- Per i contenuti multimediali — estensioni appropriate (image, video, news)
- robots.txt contiene una direttiva Sitemap con URL assoluto
- Sitemap inviata in Google Search Console e Yandex Webmaster
- Le pagine con noindex non sono incluse nella sitemap
- Le pagine con canonical verso un altro URL non sono incluse
FAQ
La sitemap serve anche a un piccolo sito?
Le pagine con noindex vanno incluse nella sitemap?
Priority influisce sul posizionamento?
Quanto spesso va aggiornata la sitemap?
Quante sitemap si possono elencare in robots.txt?
Check it with SpiderHead
Free and local: run the audit on your own machine.



