500 Internal Server Error: guida agli errori del server

Che cos’è un 500 Internal Server Error, come Googlebot tratta gli errori del server durante la scansione, perché i 500 persistenti causano la deindicizzazione e come diagnosticarli e risolverli.

Prima pubblicazione: 28 giu 2026 · Ultimo aggiornamento: 22 ago 2026 · Advanced
Lingue

Un 500 Internal Server Error è un codice generico di errore lato server: RFC 9110 lo definisce come una condizione imprevista che ha impedito al server di soddisfare la richiesta, e nulla più; non dice che cosa sia fallito, per quanto tempo o se un nuovo tentativo funzionerà. Un 500 isolato viene in genere ritentato da Google, ma i 500 persistenti sull’intero sito producono la reazione documentata di Google: scansione più lenta e, se gli errori non si risolvono, rimozione dall’indice. John Mueller ha proposto una regola empirica personale e approssimativa — un tasso di errore superiore a circa l’1% è probabilmente un problema reale — ma Google non pubblica soglie rigide. Diagnostica prima dai log del server, poi controlla il rapporto Errore del server (5xx) di GSC; cause come conflitti tra plugin ed esaurimento delle risorse sono comuni su stack specifici (soprattutto WordPress), non un elenco universale.

TL;DR — RFC 9110 definisce il 500 come una condizione imprevista che ha impedito al server di soddisfare la richiesta: questo è l’intero confine del codice di stato; causa, durata e opportunità di ritentare sono aspetti diagnostici, non semantici. La reazione documentata di Google è graduale: i 500 isolati vengono in genere ritentati; i 500 persistenti e diffusi sull’intero sito portano a una scansione più lenta e, se non vengono risolti, alla rimozione dall’indice. Mueller ha proposto una regola empirica, personale e approssimativa: tassi di errore superiori a circa l’1% probabilmente indicano che qualcosa non funziona, ma non è una soglia Google documentata e la sequenza ritenta → rallenta la scansione → rimuove descrive comportamenti documentati, non un timer fisso e sincronizzato. Diagnostica prima dai log degli errori del server, poi dal rapporto «Errore del server (5xx)» di GSC e dalle statistiche di scansione «per risposta». La distinzione 500-503 conta: il 503 è il codice autorizzato per dire «torna più tardi», con una finestra di tolleranza di circa 2 giorni; un 500 incontrollato non ha questa tolleranza.

Evidence for this claim RFC 9110 defines 500 as an unexpected condition encountered by the server that prevented it from fulfilling the request. Scope: web requests Confidence: high · Verified: RFC 9110: HTTP Semantics

Che cos’è davvero un 500

Parti dalla specifica, non dall’abbreviazione usata dai professionisti. RFC 9110 — lo standard della semantica HTTP — definisce un 500 Internal Server Error come una condizione imprevista che ha impedito al server di soddisfare la richiesta. Questo è l’intero confine di ciò che il codice di stato comunica. Non identifica la causa principale, il componente guasto, quanto durerà il problema, se la stessa richiesta avrebbe successo ritentandola o se il recupero è probabile. Tutto ciò che va oltre «il server ha incontrato qualcosa che non è riuscito a gestire» è diagnosi, non semantica del codice di stato; e la diagnosi vive nei log degli errori del server, non nella specifica o nel browser.

Evidence for this claim A 500 response means the server encountered an unexpected condition that prevented it from fulfilling the request. Scope: RFC 9110 defines the generic response semantics; it does not diagnose the underlying server fault. Confidence: high · Verified: IETF: RFC 9110 §15.6.1 — 500 Internal Server Error

Nella guida ai codici di stato HTTP di Ahrefs mantengo deliberatamente brusca la definizione rivolta ai professionisti: il server “encounters some kind of issue and doesn’t have a better or more specific error code.” (traduzione) «incontra un problema di qualche tipo e non ha un codice di errore migliore o più specifico». È una parafrasi in linguaggio semplice dello stesso confine di RFC: ancora un catch-all, ancora un sintomo e non una diagnosi.

Fa parte della famiglia 5xx insieme a 502 (bad gateway), 503 (service unavailable) e 504 (gateway timeout): tutti errori lato server, ma il 500 è quello che significa «non si applica alcun codice migliore». Poiché il codice di stato non contiene dettagli diagnostici, ricaricare la pagina nel browser non ti dice nulla sul perché; i log degli errori del server sono la fonte autorevole.

Come Googlebot tratta un 500

Il crawler di Google è progettato per essere rispettoso: adatta la velocità allo stato del server e considera le risposte 5xx uno dei segnali che significano «rallenta». La documentazione attuale di Google conferma la forma di questa reazione: le risposte 5xx e 429 causano una riduzione temporanea del crawl rate (proporzionata al numero di URL interessati), e gli URL che continuano a fallire possono alla fine essere rimossi dall’indice, mentre i contenuti già indicizzati vengono conservati nel frattempo, in attesa di un aggiornamento riuscito. Evidence for this claim Google reduces crawling in response to 5xx errors and eventually removes persistently failing URLs from its index. Scope: Google documents the general 5xx progression; it does not provide a guaranteed retry or recovery timeline for an individual URL. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers John Mueller ha descritto la stessa progressione con parole sue, in una sessione Google SEO Office Hours riportata da Search Engine Journal:

“We don’t have any strong thresholds on that. But essentially what happens with 500 errors is we’ll try to retry them. And if we continue to see …the 500 errors then we will …slow down crawling. And if we continue to see that there are 500 errors then we will drop those URLs from the index.” (traduzione) «La citazione descrive la sequenza di comportamenti documentati: Google ritenta gli URL che restituiscono 500, rallenta la scansione se gli errori continuano e può rimuoverli dall’indice se il problema persiste. Non stabilisce soglie numeriche o tempi fissi.»

Leggila come una descrizione di comportamenti documentati — nuovo tentativo, scansione più lenta, possibile rimozione — non come un timer fisso in tre passaggi con transizioni o tempi garantiti: Google non pubblica soglie esatte per il passaggio da una fase alla successiva. Un 500 isolato su un URL viene in genere ritentato e il successivo recupero riuscito normalmente chiude la questione, ma questa è la descrizione del caso comune, non una garanzia che un singolo errore abbia costo zero. Il rischio reale e documentato riguarda gli errori che non si risolvono.

Perché i 500 sull’intero sito sono peggiori di quelli isolati

Quando una grande parte del sito restituisce 500 contemporaneamente si crea una dinamica più pericolosa. La documentazione attuale di Google conferma che la riduzione del crawl rate aumenta in proporzione al numero di URL interessati: più è ampia la parte del sito che non funziona, più la scansione rallenta. Mueller ha spiegato il ragionamento in termini più specifici, descrivendolo come il sospetto di Google che la propria scansione possa contribuire al sovraccarico:

“But if a large part of a site consistently has 500 errors and we might assume that maybe we’re causing the problem and we’ll slow down crawling of the whole site and at some point we’ll say well, it looks like these pages are really gone, we’re going to drop them.” (traduzione) «La citazione presenta la caratterizzazione di Mueller sul rapporto tra molti errori 500, rallentamento della scansione dell’intero sito e successiva rimozione degli URL. È una spiegazione personale della dinamica, non una soglia o una tempistica ufficiale.»

Tratta questa specifica descrizione causale — «presumiamo di essere noi a causarlo» — come una caratterizzazione di Mueller, non come una formulazione riportata parola per parola nella documentazione ufficiale attuale di Google. Il meccanismo di fondo è documentato (più URL in errore, maggiore riduzione del crawl rate), anche se il ragionamento causale esatto è più facile da verificare nella sua dichiarazione che nei documenti. In ogni caso vale la pena interiorizzare il circuito pratico: una scansione aggressiva durante l’esaurimento delle risorse può generare più 500 → Google riduce la scansione dell’intero sito → e, se gli errori persistono comunque, le pagine vengono rimosse. Significa anche che un problema 500 non è sempre un bug del codice: a volte il server cede sotto un carico concorrente che si manifesta solo durante picchi di crawler o traffico.

Quanto è «troppo»?

Non esiste una soglia netta: la documentazione ufficiale di Google per la risoluzione dei problemi non pubblica alcuna soglia di tasso di errore. Mueller ha proposto una regola empirica, personale e approssimativa durante SEO Office Hours (riportata ancora una volta da Search Engine Journal, non da una pubblicazione ufficiale di Google):

“My feeling is if you’re seeing something more than one percent then that sounds like something is kind of broken.” (traduzione) «La citazione di Mueller propone l’1% come sensazione personale e regola empirica, non come soglia ufficiale o applicata da Google.»

Considera ~1% un test empirico non ufficiale attribuito a Mueller, non un limite Google documentato o applicato. Al di sotto probabilmente va tutto bene; al di sopra vale la pena indagare, ma non trattare il superamento dell’1% come un trigger automatico e non considerare il rimanere sotto quella soglia una garanzia. L’unico numero a cui Google si impegna pubblicamente è l’assenza di un numero: «non abbiamo soglie rigide».

500 vs. 503: la distinzione che conta

È qui che molte persone sbagliano. Un 503 Service Unavailable è il modo autorizzato per dire a un crawler «sono temporaneamente indisponibile, torna più tardi». Google lo tratta come intenzionale e gli concede una finestra di tolleranza. La documentazione di Google per la risoluzione dei problemi di scansione è esplicita:

“Return 503 or 429 HTTP response status codes temporarily for Googlebot requests when your server is overloaded. Googlebot will retry these URLs for about 2 days. Note that returning ‘no availability’ codes for more than a few days will cause Google to permanently slow or stop crawling URLs on your site.” (traduzione) «La citazione documenta l’uso temporaneo di 503 o 429 quando il server è sovraccarico, il nuovo tentativo per circa 2 giorni e il rischio di rallentare o interrompere definitivamente la scansione se i codici di indisponibilità durano più di pochi giorni.»

Il contrasto è questo: il 503 è intenzionale e riceve circa 2 giorni di tolleranza per i nuovi tentativi; un 500 incontrollato è involontario e non riceve una tolleranza analoga: viene semplicemente ritentato finché Google rinuncia. Conseguenza pratica: per una manutenzione pianificata o una difesa deliberata dal sovraccarico, restituisci 503 (idealmente con un header Retry-After), non un 500 e non una pagina di errore 200. Non camuffare mai una vera interruzione come 200.

Come diagnosticare un 500

Procedi per livelli — applicazione/codice, piattaforma/CMS, infrastruttura e risorse, poi configurazione — iniziando da ciò che costa meno e ha più probabilità di risolvere. I passaggi contrassegnati (specifico per WordPress) sono pratiche comuni di WordPress, non correzioni universali: adattali al tuo stack reale.

  1. Log degli errori del server. error.log / access.log (o il visualizzatore dei log della piattaforma). Confronta gli orari con le richieste che falliscono. Qui compaiono il vero stack trace, l’errore fatale PHP o il fallimento della connessione al DB. Tutto ciò che viene dopo è un’ipotesi finché non hai letto questi log.
  2. GSC — rapporto Errore del server (5xx). Il rapporto Indicizzazione delle pagine di Google Search Console segnala gli URL sui quali Google vede direttamente i 500. Poi apri Statistiche di scansione e leggi la ripartizione «per risposta» nel tempo: è così che distingui un inconveniente transitorio da un problema di disponibilità reale e persistente.
  3. Bing Webmaster Tools. I suoi avvisi sugli errori di scansione raggruppano gli Errori del server (5xx) e indicano gli URL specifici e lo strumento Informazioni sulla scansione.
  4. Riproduci il problema come bot, non solo come browser. Una pagina può restituire 500 a Googlebot e caricarsi correttamente per te: il carico attivato dalla scansione, una configurazione errata del rilevamento bot/firewall o limiti di capacità possono manifestarsi solo con traffico bot concorrente. Usa URL Inspection (GSC), Fetch as Bingbot o curl con uno user-agent bot per individuare gli errori solo per i bot. «Funziona nel mio browser» non è il via libera definitivo.
  5. Conflitti tra plugin, temi o moduli (caso specifico di WordPress; adattalo altrove). Prima fai un backup: devi sempre poter tornare indietro prima di disattivare componenti. Poi disattiva le estensioni e riattivale una alla volta per isolare quella responsabile, controllando i permessi e la proprietà dei file che tocchi. Le guide di troubleshooting WordPress dei provider di hosting riportano spesso questo schema, ma è un’osservazione specifica dello stack, non la prova che sia la causa principale ovunque: su un altro CMS o su un’app personalizzata l’equivalente può essere un modulo, pacchetto o middleware di terze parti.
  6. Esaurimento delle risorse. Limiti della memoria PHP, limiti delle connessioni al database, capacità dell’hosting condiviso, picchi di traffico o di scansione. Il tuo host spesso può confermarlo dal proprio lato.
  7. Configurazione e modifiche recenti. Un .htaccess danneggiato, una modifica errata alla configurazione del server, un deploy recente o credenziali DB sbagliate. Le modifiche recenti sono il punto di partenza con il rendimento più alto.

Come risolverlo (adatta la correzione alla causa)

Adatta la correzione al livello indicato dalla diagnosi. Sono schemi comuni riportati in articoli pratici, non un elenco ordinato né universale delle cause più probabili sul tuo stack specifico:

  • È stato causato da configurazione/deploy → annulla la modifica e correggi .htaccess, configurazione o credenziali.
  • Esaurimento delle risorse → aumenta i limiti (memoria PHP, connessioni DB) o passa a un piano di hosting superiore; se la scansione sta causando il sovraccarico, è anche una questione di crawl rate.
  • Conflitto tra plugin/moduli → rimuovi o sostituisci l’estensione responsabile.
  • Bug del codice → correggi il codice e aggiungi la gestione degli errori mancante.
  • Non riesci a capire la causa → rivolgiti al tuo host con gli orari esatti e le righe dei log. Non fare supposizioni in produzione.

Prevenire il ripetersi del problema

Monitorare e generare avvisi sui tassi 5xx, mettere in staging le modifiche prima di portarle in produzione, eseguire test di carico prima dei picchi di traffico noti e — se la scansione di Googlebot è essa stessa il fattore scatenante — gestire il carico di scansione (e restituire deliberatamente 503/429 durante un sovraccarico reale, invece di lasciare che il server emetta 500 incontrollati).

Domande frequenti

Un errore 500 danneggia la SEO? Il rischio documentato riguarda soprattutto la persistenza su larga scala. I 500 isolati vengono in genere ritentati, senza una penalizzazione documentata per un singolo inconveniente; i 500 persistenti e diffusi sull’intero sito rallentano la scansione e possono portare alla deindicizzazione.

Dopo quanto tempo Google deindicizza una pagina con un 500? Non esiste una tempistica fissa. Google ritenta prima e rallenta la scansione; la rimozione dall’indice avviene solo se gli errori continuano. Risolvi il problema e le pagine generalmente tornano quando le scansioni hanno di nuovo successo.

Perché il mio sito restituisce 500 a Googlebot ma si carica correttamente nel browser? I 500 solo per i bot indicano di solito problemi di capacità o di gestione dei bot: carico attivato dalla scansione, regole firewall/bot o limiti che si manifestano solo con traffico bot concorrente. Fidati dei log, non di un controllo manuale nel browser.

I 500 possono rallentare la scansione dell’intero sito, non solo delle pagine interessate? Sì: la documentazione di Google conferma che la riduzione del crawl rate aumenta con il numero di URL in errore, quindi una grande parte del sito che restituisce 500 rallenta la scansione a livello del sito. Mueller ha inoltre descritto il ragionamento come il sospetto di Google che la propria scansione possa contribuire al sovraccarico: è una sua caratterizzazione, non una formulazione riportata parola per parola nei documenti ufficiali attuali.

Che cosa causa un 500 in WordPress? Nello specifico di WordPress, i provider di hosting e la community WordPress riportano più spesso conflitti tra plugin o temi, un .htaccess corrotto o il raggiungimento del limite di memoria PHP: è ciò che viene riportato per quella piattaforma, non l’affermazione che siano le cause principali universali di ogni 500. L’ordine diagnostico sopra (prima i log, poi ciò che è cambiato) è lo stesso indipendentemente dal CMS.

È sicuro ritentare automaticamente una richiesta dopo un 500? Solo dopo aver verificato prima il metodo e l’idempotenza della richiesta: il codice di stato 500 da solo non autorizza una politica di retry. GET, HEAD, PUT e DELETE sono generalmente sicuri da ritentare perché idempotenti (ripeterli non dovrebbe causare effetti collaterali aggiuntivi); un POST semplice in genere non lo è, a meno che l’API garantisca esplicitamente l’idempotenza (per esempio tramite una chiave di idempotenza): ritentarlo alla cieca rischia di creare un ordine duplicato, un’e-mail duplicata o un doppio addebito. Quando ritenti, usa un backoff esponenziale con jitter, limita il numero di tentativi e imposta un budget di retry, così un server in difficoltà non viene colpito da una tempesta di nuovi tentativi oltre al carico che sta già causando problemi.

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.