403 Vietato

Cos'è un errore HTTP 403, come lo tratta Google (bloccato, con un risultato simile a noindex), quali sono le cause comuni (controlli di accesso, blocco dei bot, permessi configurati male) e come correggere i 403 per la SEO.

Prima pubblicazione: 27 giu 2026 · Ultimo aggiornamento: 8 ago 2026 · Advanced
Lingue
1 segnale di evidenza in questa pagina

Un 403 Forbidden significa che il server ha compreso la richiesta ma l'ha rifiutata: l'accesso è negato, e il rifiuto non deve dipendere per forza dalle credenziali (il server può persino inviare un 404 per nascondere l'esistenza di una risorsa vietata). Non è un 404 («qui non c'è nulla») né un 401 («autenticati prima»): un 403 è un «non puoi avere questa risorsa» attivo. Per la SEO, un 403 mantenuto su una pagina che vuoi rendere pubblica la tiene fuori dall'indice di Google: il risultato ricorda un noindex, ma il meccanismo è diverso, perché Google non può leggere il contenuto di una risposta 4xx. Poiché Googlebot non invia mai credenziali, un 403 servito a Googlebot va indagato invece di essere dato per intenzionale: tra le cause comuni ci sono un filtro bot CDN/WAF, un blocco dell'IP o dello user-agent sul server, un plugin di sicurezza o un errore in .htaccess/nei permessi, anche se non esistono dati affidabili sulla frequenza di ciascuna causa. Non usare mai 403 per rallentare il crawling (per una finestra breve servono 429/503). Controlla prima l'intento: alcuni 403 (staging, area admin, contenuti riservati) sono corretti e non vanno risolti. Nota l'eccezione: un 403 sul robots.txt viene trattato in modo permissivo, mentre un 403 su una pagina è un blocco rigido.

TL;DR — Un 403 significa che il server ha compreso la richiesta ma l’ha rifiutata per motivi di accesso: è diverso da 404 (scomparso) e 401 (autenticazione). Per l’indicizzazione il risultato ricorda un noindex: Google non indicizza un URL 403 e rimuove quello che era già indicizzato, anche se il meccanismo (blocco del server/CDN/WAF) non ha nulla a che vedere con un meta tag. Poiché Googlebot non invia credenziali, un 403 per Googlebot è quasi sempre una configurazione errata: soprattutto filtro bot CDN/WAF, blocchi IP/UA del server, plugin di sicurezza oppure .htaccess/permessi. Il 403 non incide sul crawl rate: non usarlo mai per limitare il crawling (a questo servono 429/503). Conta anche il caso inverso: un 403 sul file robots.txt viene trattato in modo permissivo, mentre un 403 su una pagina è un blocco rigido.

403, 401 e 404: prima metti a fuoco il modello mentale

Questi tre codici vengono continuamente confusi e la distinzione guida l’intera diagnosi. La definizione di base viene dalla specifica HTTP, RFC 9110 §15.5.4: il server ha compreso la richiesta e rifiuta di soddisfarla. Nella stessa sezione ci sono alcune sfumature più importanti di quanto si creda:

  • Il rifiuto non deve dipendere dalle credenziali. RFC 9110 ammette un 403 per motivi estranei all’autenticazione: non dimostra sempre che il richiedente sia «conosciuto» o che siano state coinvolte credenziali. Non interpretare ogni 403 come una storia di autenticazione.
  • Un 403 non deve ammettere che la risorsa esiste. La specifica consente esplicitamente a un server d’origine che vuole nascondere l’esistenza di una risorsa vietata di rispondere invece con 404. Vale anche il contrario: un 404 non significa sempre «qui non c’è mai stato nulla»; a volte significa «c’è qualcosa, ma non voglio che tu lo sappia».
  • 401 e 403 non sono soltanto «più debole contro più forte». Un 401 è una sfida di autenticazione: la specifica richiede un header WWW-Authenticate che spieghi al client come autenticarsi. Un 403 non ha questo obbligo; è un rifiuto più ampio e non promette che una nuova autenticazione (con le stesse credenziali o con altre) cambierà qualcosa. La versione in linguaggio semplice di MDN è: un 403 è “similar to 401, except that … authenticating or re-authenticating makes no difference. The request failure is tied to application logic, such as insufficient permissions.” (traduzione) «simile a 401, salvo che autenticarsi o autenticarsi di nuovo non cambia nulla. Il fallimento della richiesta dipende dalla logica dell’applicazione, per esempio da permessi insufficienti.» Evidence for this claim A 403 response means the server understood the request but refuses to fulfill it, and authenticating does not necessarily make a difference. Scope: RFC 9110 defines the protocol semantics; it does not identify the application, firewall, or policy responsible for a specific response. Confidence: high · Verified: IETF: RFC 9110 §15.5.4 — 403 Forbidden
  • 404 Not Found, per contrasto: il caso ordinario è «qui non c’è nulla», salvo il punto sul nascondere l’esistenza spiegato sopra.

Questa differenza è uno dei motivi per cui un 403 a Googlebot merita un secondo esame invece di essere considerato normale. Un 401 a un bot su una pagina riservata ai membri può essere corretto: l’area richiede un accesso. Un 403 a un bot su una pagina che dovrebbe essere pubblica significa che una regola ha deciso che il richiedente non era benvenuto; come vedremo, però, conviene comunque confermare che la pagina fosse davvero destinata al pubblico prima di chiamarlo un bug.

Come tratta Google un 403 (risultato simile a noindex, meccanismo diverso)

Google raggruppa il 403 con il resto della famiglia 4xx. La documentazione Search Central dice: “Google doesn’t index URLs that return a 4xx status code, and URLs that are already indexed and return a 4xx status code are removed from the index.” (traduzione) «Google non indicizza gli URL che restituiscono un codice di stato 4xx e rimuove dall’indice gli URL già indicizzati che restituiscono un 4xx». E aggiunge: “All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist.” (traduzione) «Tutti gli errori 4xx, tranne 429, vengono trattati allo stesso modo: i crawler di Google informano il sistema di elaborazione successivo che il contenuto non esiste». Google nota inoltre che la frequenza di crawling di un URL noto diminuisce gradualmente più a lungo continua a restituire 4xx: è un effetto per singolo URL, distinto dal crawl rate complessivo del sito (torneremo sulla distinzione). Evidence for this claim Google does not index 4xx URLs and removes already-indexed 4xx URLs over time. Scope: Google's crawler documentation supports the indexing outcome for persistent 403 responses, not the article's analogy to noindex. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers

Quindi il risultato ricorda un noindex: la pagina non entra nell’indice e, se era già presente, ne esce nel tempo. Il meccanismo, però, è davvero diverso, non solo nell’aspetto: un tag noindex deve essere recuperato e analizzato dall’HTML della pagina per avere effetto, mentre un 403 impedisce a Google di leggere qualsiasi contenuto: non esiste una pagina da elaborare. Sono due percorsi diversi che convergono nella stessa mancata presenza su Google Search. Per questo nella mia guida ai codici di stato HTTP descrivo il 403 semplicemente come “the client is known but doesn’t have access rights,” (traduzione) «il client è riconosciuto ma non ha i diritti di accesso», e noto che i 4xx fanno uscire le pagine dall’indice; «riconosciuto» è però l’abbreviazione del rapporto Google, non l’affermazione che ogni 403 coinvolga un richiedente autenticato.

Perché un 403 a Googlebot merita un’indagine (non sempre è un errore)

Questa sezione si basa sulla guida di Google sull’indicizzazione delle pagine: “HTTP 403 means that the user agent provided credentials, but was not granted access. However, Googlebot never provides credentials, so your server is returning this error incorrectly. The page will not be indexed.” (traduzione) «HTTP 403 significa che lo user agent ha fornito credenziali, ma non ha ottenuto l’accesso. Tuttavia Googlebot non fornisce mai credenziali, quindi il server restituisce questo errore in modo errato. La pagina non verrà indicizzata». Va letto nel contesto: è una guida specifica per il rapporto su una pagina che Search Console presume tu voglia indicizzare, non un’affermazione universale che ogni 403 a Googlebot sia un bug. Googlebot non si autentica, per ciò un 403 presentato soltanto come «le tue credenziali non bastano» non si applica del tutto; ma molti 403 non riguardano affatto le credenziali e un server può legittimamente decidere che Googlebot (o chiunque altro) non debba ottenere una risorsa.

Prima di inseguire una correzione, chiediti: questa è davvero una pagina che vuoi rendere pubblica e indicizzare? Se è staging, un’area admin, un paywall o un contenuto riservato, un 403 a Googlebot è corretto e non c’è nulla da risolvere (vedi «Quando un 403 va bene»). Se è una pagina destinata al pubblico, probabilmente una regola è scattata contro il richiedente sbagliato: un WAF ha identificato il crawler come bot da bloccare, un blocco di intervallo IP ha coinvolto gli intervalli di Google o la paranoia predefinita di un plugin di sicurezza ha agito. Non ho però dati affidabili sulla frequenza reale di ciascuna causa: considera l’elenco sotto come insieme di ipotesi da verificare, non come diagnosi. Per una pagina che dovrebbe essere pubblica, Google consiglia di ammettere utenti non autenticati oppure consentire esplicitamente Googlebot senza autenticazione (dopo averne verificato l’identità, come vedremo).

Il 403 non incide sul crawl rate: non usarlo per limitare il crawling

Talvolta si usa 403 (o 404) per far rallentare Googlebot quando un server è in difficoltà. Non farlo. Google è esplicito: “Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (traduzione) «Non usare i codici di stato 401 e 403 per limitare il crawl rate. I codici 4xx, tranne 429, non incidono sul crawl rate». Occorre però precisare l’ambito: Google dice separatamente che la frequenza di crawling di un singolo URL noto diminuisce gradualmente più a lungo resta in 4xx; è una riduzione dell’interesse per quell’URL, non un limite al crawl rate dell’intero sito. Per ottenere quest’ultimo effetto, il 403 non serve.

Gary Illyes ha scritto un intero post sul tema (Don’t 404 my yum): “All 4xx HTTP status codes (again, except 429) will cause your content to be removed from Google Search.” (traduzione) «Tutti i codici di stato HTTP 4xx (di nuovo, tranne 429) faranno rimuovere il tuo contenuto da Google Search». La leva d’emergenza corretta è restituire 500, 503 o 429 per una finestra breve (ore, non giorni), e nemmeno questo è un lasciapassare: Google avverte che risposte 5xx persistenti per più giorni rischiano anch’esse di far rimuovere le pagine dall’indice, quindi contano ambito e durata, non solo il codice scelto. Il resoconto di Barry Schwartz su un incidente precedente rende chiara la gravità: i siti hanno “lost load[s] of their pages from our index because they were serving them with a 403 status code instead of a 503.” (traduzione) «perso un gran numero di pagine dall’indice perché le servivano con un codice 403 invece di 503». Un 503 viene interpretato come temporaneo; un 403 ti fa uscire dall’indice.

Il caso particolare di robots.txt: un 403 è permissivo, non restrittivo

Ecco una distinzione che quasi tutti gli articoli concorrenti trascurano, e che capovolge l’intuizione. Un 403 su una pagina è un blocco rigido. Un 403 sul file robots.txt stesso, invece, viene trattato nel modo opposto. La specifica robots.txt di Google dice: “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (traduzione) «I crawler di Google trattano tutti gli errori 4xx, tranne 429, come se non esistesse un file robots.txt valido. Ciò significa che Google presume che non vi siano restrizioni di crawling». Evidence for this claim A 403 on `/robots.txt` is handled differently from a 403 on a page: Google treats a non-429 4xx robots response as if no valid robots file exists and assumes no restrictions from that file. Scope: robots.txt fetch only Confidence: high · Verified: How Google interprets the robots.txt specification

Quindi, se il firewall inizia a restituire 403 per robots.txt, Google conclude che non hai alcuna regola e scansiona liberamente, comprese le directory che volevi vietare. Nella versione colorita di Illyes: se avevi una regola che vietava la tua «biancheria sporca», ora Googlebot la conosce comunque. Non confondere «il mio robots.txt ha restituito 403» (Google ignora le regole) con «le mie pagine hanno restituito 403» (quegli URL vengono rimossi dall’indice). Gli effetti sono opposti e diagnosticare male il caso significa correggere la cosa sbagliata.

Come tratta Bing il 403

Onestamente, la documentazione pubblica di Bing sul 403 è più scarna di quella di Google, quindi restringo l’ambito invece di riempire il testo. Bingbot viene negato dagli stessi meccanismi di Googlebot: regole robots.txt, blocchi IP/user-agent a livello server e regole WAF/firewall. Bing Webmaster Tools mostra gli errori di crawling nei relativi avvisi. La conclusione pratica è la stessa per entrambi i motori: consenti il passaggio del crawler verificato attraverso il livello di sicurezza e verifica il bot tramite intervalli IP pubblicati e DNS inverso, non fidandoti di una stringa user-agent. Considera Bing come un promemoria: «correggere Googlebot» non equivale automaticamente a «correggere tutti i bot»; dopo una modifica al WAF, controlla gli strumenti di entrambi i motori.

Cause comuni (non in ordine: non ho dati di prevalenza tra i siti)

Protezione bot CDN/WAF: la causa più trascurata nei contenuti SEO esistenti. È da qui che inizierei a controllare nel 2026, anche se non posso dire quanto spesso sia la causa effettiva rispetto alle altre sotto. Bot Fight Mode e Super Bot Fight Mode di Cloudflare, le WAF Managed Rules e le regole firewall personalizzate restituiscono regolarmente 403 a Googlebot e Bingbot come danno collaterale. Il segnale è che il blocco avviene al bordo: server d’origine e CMS sembrano perfettamente puliti mentre GSC continua a mostrare 403. Controlla gli Security Events nel pannello del CDN per vedere se il crawler è stato sottoposto a una sfida o bloccato.

2. Blocchi IP o user-agent a livello server/hosting. Alcuni host bloccano per user-agent o applicano un rate limit predefinito; i blocchi di intervalli IP pensati per il traffico abusivo possono intercettare gli intervalli dei crawler.

3. Configurazione errata di robots.txt / .htaccess. Un Deny from rimasto per errore o una regola di rewrite rotta può vietare un’intera directory. (Ricorda il caso particolare di robots.txt descritto sopra.)

4. Plugin di sicurezza. Wordfence, iThemes Security e strumenti simili hanno impostazioni predefinite aggressive contro i bot, che possono colpire crawler legittimi.

5. Barriere di accesso e contenuti autenticati. Tutto ciò che è protetto dall’autenticazione restituisce 403 a un bot per progettazione: Googlebot non accede mai. Spesso questo blocco è intenzionale (vedi l’ultima sezione).

6. Errori nei permessi di file o directory. La causa classica lato amministrazione server. Su WordPress, Rank Math documenta valori ragionevoli: directory 755/750, file 644/640, wp-config.php 400/440; tra le correzioni comuni c’è «rigenerare .htaccess» dalle impostazioni dei permalink.

7. Malware o sito compromesso che inietta regole di accesso errate e 8. blocchi geografici che intercettano inavvertitamente l’intervallo IP di un crawler.

Diagnosticare un 403: isola quale livello lo emette

Molte guide saltano direttamente a «disabilita i plugin». La vera abilità è trovare quale livello rifiuta la richiesta: un semplice codice di stato 403 non lo rivela da solo. Servono header di risposta, log o un evento di sicurezza che indichi davvero CDN, WAF, applicazione, host, permessi, geografia o cache prima di chiamare in causa un colpevole. Non concludere subito «probabilmente è il WAF» senza prove. Ecco come cambia la correzione in base al livello:

  1. Indicizzazione delle pagine GSC → «Bloccata per accesso vietato (403)» per vedere gli URL interessati, poi Ispezione URL → Testa URL pubblicato per la risposta live attuale.
  2. Riproducilo con curl, cambiando user-agent, per confermare lo stato che il server restituisce davvero:
    # As a generic client
    curl -I https://example.com/page/
    # Spoofing Googlebot's UA (tests UA-based rules)
    curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page/
    Se uno user-agent di browser normale riceve 200 ma quello di Googlebot riceve 403, hai trovato una regola basata sullo user-agent.
  3. Controlla lo stato proprio di robots.txt (restituisce lui 403? È un problema diverso: vedi sopra).
  4. Esamina gli Security Events del CDN/WAF per verificare se il crawler è stato sottoposto a una sfida o bloccato.
  5. Verifica che il crawler sia davvero Googlebot tramite DNS inverso e diretto, non tramite la stringa UA (che è facile da falsificare).
  6. Isola il problema disabilitando per fasi: una regola WAF o un plugin alla volta, finché il 403 non scompare.

Correggerlo: autorizza i bot nel modo giusto

La correzione tentatrice è autorizzare la stringa user-agent di Googlebot. Non fermarti lì: le stringhe UA sono facili da falsificare, quindi autorizzare solo in base allo UA crea una falla di sicurezza e lascia passare qualunque scraper che dichiari di essere Googlebot. Verifica così:

  • Conferma i bot tramite DNS inverso + DNS diretto oppure confrontandoli con gli intervalli IP pubblicati da Google/Bing.
  • La maggior parte dei CDN/WAF offre una categoria «verified bots» che esegue questa verifica: preferiscila a una regola di autorizzazione UA grezza.
  • Correggi la regola specifica (una regola gestita WAF, una regola firewall o un’impostazione di un plugin) invece di disattivare tutta la sicurezza.
  • Poi usa Convalida correzione nel rapporto Indicizzazione delle pagine di GSC e, se è urgente, richiedi una nuova indicizzazione tramite Ispezione URL.

Quando un 403 va bene: non «correggere» questi casi

Non ogni 403 è un bug. Un 403 è corretto e intenzionale per siti di staging, aree admin, sezioni private per membri e contenuti a pagamento/riservati che non hai mai voluto indicizzare. In un audit Ahrefs o Screaming Frog, un 403 su queste risorse non è un problema: la correzione serve solo quando una pagina destinata a essere pubblica e indicizzabile viene bloccata per errore. Non «risolvere» automaticamente ogni 403 segnalato da un audit; prima conferma che la pagina debba davvero entrare nell’indice.

Per la famiglia più ampia, le differenze tra 4xx e 5xx e il posto del 403 al suo interno, consulta la mia guida ai codici di stato HTTP e al loro impatto SEO e gli approfondimenti fratelli 401 Unauthorized e 404 Not Found di questo cluster.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.