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.

Come Googlebot usa una sitemap: riceve la lista di URL direttamente e scansiona le pagine senza vagare fra i link interni.

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.

Le sitemap sono particolarmente preziose per: siti nuovi senza link in entrata; siti grandi (migliaia di pagine); pagine con contenuti multimediali ricchi (immagini, video); siti multilingue con hreflang.

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
<?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 &amp;, < diventa &lt;. Un singolo file sitemap è limitato a 50.000 URL e 50 MB non compressi.

Attributi: loc, lastmod, changefreq, priority

AttributoObbligatorioFormatoDescrizione
locSìURL assolutoIndirizzo completo della pagina con protocollo e dominio. Massimo 2048 caratteri.
lastmodNoW3C Datetime (AAAA-MM-GG)Data dell'ultima modifica. Google ci crede solo quando il valore è stabile e accurato.
changefreqNoalways / hourly / daily / weekly / monthly / yearly / neverIndicazione sulla frequenza di aggiornamento. Google la usa come un segnale fra molti, senza seguirla alla lettera.
priorityNo0.0 — 1.0Importanza 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.

Non impostare automaticamente la data di oggi a ogni build. La data deve cambiare solo quando cambia davvero il contenuto principale della pagina.

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

In robots.txt basta elencare solo il Sitemap Index di root — non serve indicare ogni file figlio. Il motore di ricerca li scopre attraverso l'indice.

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
<?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>
Attributi del tag <url> e valori ammessi:
TagObbligatorioDescrizione
image:locSìURL assoluto dell'immagine. Può stare su un dominio diverso (ad es. una CDN).
image:titleNoTitolo dell'immagine. Equivalente all'attributo title di img.
image:captionNoDidascalia dell'immagine. Equivalente all'attributo alt di img.
image:geo_locationNoLocalità geografica del soggetto nell'immagine.
image:licenseNoURL 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
<?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
<?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>
Il formato News Sitemap non è adatto ai blog normali. È pensato esclusivamente per gli editori news approvati da Google News. Usare il formato senza partecipare al programma non porta alcun beneficio.

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

Regola di reciprocità: se la pagina A reference la pagina B via hreflang, la pagina B deve reference la pagina A in cambio. Le dichiarazioni hreflang a senso unico vengono trattate da Google come errori e ignorate.
Codice hreflangCaso d'uso
ruLingua russa, qualsiasi regione
enLingua inglese, qualsiasi regione
en-USLingua inglese, regione USA
ru-RULingua russa, regione Russia
x-defaultPagina 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.

text
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /

Sitemap: https://example.com/sitemap.xml

Se hai più file indice di root (ad es. uno separato per ru e en), puoi elencare più direttive Sitemap:

text
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xml
Oltre a robots.txt, invia la sitemap in Google Search Console (sezione Sitemaps) e in Yandex Webmaster (Indicizzazione → File Sitemap). Questo accelera la prima elaborazione e ti dà statistiche sugli URL scoperti e indicizzati.

Documentazione 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?
Tecnicamente no. Se il sito è ben linkato internamente e tutte le pagine sono raggiungibili dalla homepage, il bot le troverà da solo. Ma una sitemap fa sempre comodo: accelera la scansione e ti dà controllo su cosa viene indicizzato.
Le pagine con noindex vanno incluse nella sitemap?
No. Le pagine con meta tag noindex o X-Robots-Tag: noindex non devono comparire nella sitemap — la contraddizione disorienta i motori di ricerca. Includi solo le pagine che vuoi indicizzare.
Priority influisce sul posizionamento?
No. Priority è un suggerimento di priorità di scansione dentro il tuo sito, non un segnale di posizionamento. Aiuta il bot a decidere quali pagine visitare più spesso, ma non ha effetto sulla posizione nei risultati di ricerca.
Quanto spesso va aggiornata la sitemap?
Ogni volta che le pagine vengono aggiunte o rimosse. Per i siti dinamici (blog, e-commerce) conviene rigenerare la sitemap automaticamente alla build. I siti statici la aggiornano manualmente quando cambia la struttura.
Quante sitemap si possono elencare in robots.txt?
Lo standard non limita il numero di direttive Sitemap in robots.txt. Ma la buona pratica è un unico Sitemap Index, da cui Google e Yandex scoprono tutti gli altri file.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it