Sitemap che Google indicizza davvero: quello che le guide non dicono
GSC mostra "0 pagine indicizzate" sulla tua sitemap. Le pagine sono online e raggiungibili. Panico. Ma prima di rifare tutto, ecco come distinguere il bug GSC dal vero problema.
La prima volta che ho visto "Inviati: 12 — Indicizzati: 0" in Google Search Console per smartweb-media.com, ho pensato a un problema serio. Le pagine erano online, il sito funzionava, nessun errore visibile.
Dopo un'analisi più attenta, ho capito che il numero era fuorviante — non rifletteva lo stato reale dell'indicizzazione. Era un artefatto di come GSC conta le pagine in presenza di una doppia proprietà www/non-www.
Ecco cosa ho trovato, come verificare lo stato reale, e quando invece il "0 indicizzati" è davvero un problema da risolvere.
Il bug: doppia proprietà www e non-www in GSC
Google Search Console distingue le proprietà in modo molto preciso. https://smartweb-media.com/ e https://www.smartweb-media.com/ sono due proprietà separate — anche se il sito ha un redirect 301 da una all'altra.
situazione smartweb-media.com
Proprietà 1: https://smartweb-media.com/ Permesso: Owner Sitemap inviata: smartweb-media.com/sitemap.xml Inviati: 12 | Indicizzati: 0 ← numero fuorviante Proprietà 2: https://www.smartweb-media.com/ Permesso: Full User Sitemap inviata: www.smartweb-media.com/sitemap.xml Inviati: 12 | Indicizzati: 0 ← idem
Il redirect 301 da www → non-www è attivo e funzionante. Google ha crawlato le pagine e le ha indicizzate sotto la versione non-www. Ma il contatore "Indicizzati" nella sezione Sitemap di GSC viene aggiornato con ritardo — spesso settimane — e può rimanere a 0 anche quando le pagine sono correttamente indicizzate.
Questo è un comportamento documentato di GSC, non un'anomalia del sito.
La fonte di verità: URL Inspection
Il contatore della sitemap è un aggregato lento. L'unica fonte affidabile sullo stato reale di ogni URL singolo è lo strumento Ispezione URL in GSC.
risultati URL Inspection — smartweb-media.com
URL: / Stato: PASS | Coverage: Submitted and indexed ✅ Ultimo crawl: 2026-03-19 | Crawled as: MOBILE URL: /servizi.html Stato: PASS | Coverage: Submitted and indexed ✅ Ultimo crawl: 2026-03-10 URL: /blog/seo-audit-con-claude-pipeline.html Stato: PASS | Coverage: Submitted and indexed ✅ Ultimo crawl: 2026-03-08 URL: /index-en.html Stato: NEUTRAL ⚠️ Coverage: Duplicate, Google chose different canonical than user
Le prime tre pagine: indicizzate, nessun problema. Il problema reale è /index-en.html — Google ha deciso di usare un canonical diverso da quello dichiarato. Questo è un problema concreto, non il "0 indicizzati" della sitemap.
Script Python: verifica automatica via URL Inspection API
Invece di controllare ogni URL manualmente in GSC, uso la URL Inspection API per automatizzare il controllo su tutte le pagine della sitemap:
check_indexing.py
from google.oauth2 import service_account
from googleapiclient.discovery import build
import requests
import xml.etree.ElementTree as ET
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
KEY_FILE = 'service-account.json'
SITE_URL = 'https://smartweb-media.com/'
def get_service():
creds = service_account.Credentials.from_service_account_file(
KEY_FILE, scopes=SCOPES)
return build('searchconsole', 'v1', credentials=creds)
def get_sitemap_urls(sitemap_url):
"""Legge tutti gli URL dalla sitemap XML."""
resp = requests.get(sitemap_url, timeout=10)
root = ET.fromstring(resp.content)
ns = {'sm': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
return [loc.text for loc in root.findall('.//sm:loc', ns)]
def check_url_indexing(service, url, site_url):
"""Controlla lo stato di indicizzazione di un URL specifico."""
try:
result = service.urlInspection().index().inspect(
body={'inspectionUrl': url, 'siteUrl': site_url}
).execute()
idx = result.get('inspectionResult', {}).get('indexStatusResult', {})
return {
'url': url,
'verdict': idx.get('verdict', 'UNKNOWN'),
'coverage': idx.get('coverageState', 'UNKNOWN'),
'last_crawl': idx.get('lastCrawlTime', 'N/A')[:10] if idx.get('lastCrawlTime') else 'N/A',
'canonical_gsc': idx.get('googleCanonical', ''),
'canonical_declared': idx.get('userCanonical', ''),
'referring_urls': idx.get('referringUrls', [])
}
except Exception as e:
return {'url': url, 'verdict': 'ERROR', 'coverage': str(e)}
def audit_indexing(sitemap_url=f"{SITE_URL}sitemap.xml"):
"""Verifica lo stato di indicizzazione di ogni URL nella sitemap."""
service = get_service()
urls = get_sitemap_urls(sitemap_url)
print(f"Controllo indicizzazione per {len(urls)} URL\n{'='*60}")
results = {'indexed': [], 'issues': [], 'errors': []}
for url in urls:
status = check_url_indexing(service, url, SITE_URL)
path = url.replace(SITE_URL.rstrip('/'), '') or '/'
if status['verdict'] == 'PASS':
print(f" ✅ {path:<50} {status['coverage']}")
print(f" Ultimo crawl: {status['last_crawl']}")
results['indexed'].append(status)
elif status['verdict'] == 'NEUTRAL':
print(f" ⚠️ {path:<50} {status['coverage']}")
if status['canonical_gsc'] != status['canonical_declared']:
print(f" Google canonical: {status['canonical_gsc']}")
print(f" Tuo canonical: {status['canonical_declared']}")
results['issues'].append(status)
elif status['verdict'] == 'FAIL':
print(f" ❌ {path:<50} {status['coverage']}")
results['errors'].append(status)
else:
print(f" ? {path:<50} {status['verdict']}")
print(f"\n{'='*60}")
print(f"RIEPILOGO:")
print(f" ✅ Indicizzate: {len(results['indexed'])}")
print(f" ⚠️ Con problemi: {len(results['issues'])}")
print(f" ❌ Errori: {len(results['errors'])}")
return results
if __name__ == '__main__':
audit_indexing()
Quando "0 indicizzati" è davvero un problema
Il "0 indicizzati" nella sitemap è un falso allarme solo in certi casi. Ecco quando è un problema reale:
🔴 URL Inspection mostra FAIL
Se l'Ispezione URL mostra "Non indicizzato" con motivi come "crawlato ma non indicizzato", "pagina reindirizzata", o "duplicate senza canonical selezionato" — è un problema reale che richiede azione.
🔴 Le URL nella sitemap restituiscono errori HTTP
Se le pagine nella sitemap restituiscono 404, 500 o redirect a pagine diverse — Google non può indicizzarle. Controlla con uno script che verifichi lo status code di ogni URL.
🔴 robots.txt blocca il crawl
Se il robots.txt ha un Disallow: / o blocca specifiche directory, Google non può crawlare quelle pagine anche se sono nella sitemap.
🟡 Il sito ha meno di 3 mesi
I siti nuovi vengono crawlati più lentamente. Se hai inviato la sitemap di recente, aspetta 2-4 settimane prima di preoccuparti. Usa l'URL Inspection per verificare lo stato singolo.
✅ URL Inspection mostra PASS → nessun problema reale
Se l'Ispezione URL mostra "Inviata e indicizzata" per le pagine principali, il contatore della sitemap è un artefatto di ritardo. Attendi l'aggiornamento o ignora — le pagine sono indicizzate.
Come ottimizzare la sitemap per velocizzare l'indicizzazione
1. Includi solo URL canonici
La sitemap dovrebbe contenere solo la versione canonica di ogni URL — quella che hai dichiarato nel tag canonical. Se includi la versione www e la versione non-www della stessa pagina, stai confondendo Google.
2. Usa lastmod in modo accurato
sitemap.xml — formato corretto
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://smartweb-media.com/</loc>
<lastmod>2026-03-30</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://smartweb-media.com/blog/seo-audit-con-claude-pipeline.html</loc>
<lastmod>2026-03-02</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
3. Usa la proprietà di dominio in GSC
Invece di gestire proprietà separate per www e non-www, puoi aggiungere una proprietà di dominio in GSC che copre tutte le varianti automaticamente:
- In GSC → Aggiungi proprietà → Dominio (non URL)
- Inserisci:
smartweb-media.com(senza https://) - Verifica con record DNS TXT
- Questa proprietà aggrega i dati di tutte le varianti: http, https, www, non-www
Stai interpretando correttamente i dati di GSC?
GSC è potente ma pieno di metriche fuorvianti. Analizzo i tuoi dati, distinguo i problemi reali dai falsi allarmi, e ti dico cosa vale la pena fixare.
Request Free Audit