Vai al contenuto
Strumento gratuito

Codici di stato HTTP: elenco e significato

Codici di stato HTTP in un elenco consultabile: inserisci 404, 403, 500, 502 o «reindirizzamento» e scopri cosa significa il codice HTTP, quali sono le cause e come risolvere il problema. 70 codici da 100 a 526, con esempi nginx e Apache copiabili, gli errori Cloudflare da 520 a 526 e i codici nginx 444 e 499. Gratis e senza registrazione: la ricerca avviene interamente nel tuo browser.

Creato da Dimitri Heissler

Gestisci un progetto tuo? Porta il tuo sito su un web hosting veloce.

La ricerca riguarda numero, nome, spiegazione, cause ed esempi di configurazione, per esempio «timeout» o «client_max_body_size».

Ricerche frequenti:

70 di 70 codici di stato

Significato

Il server ha ricevuto gli header della richiesta e non ha obiezioni. Il client può inviare il body. Questo fa parte dell'header «Expect: 100-continue», con cui un client chiede, prima di un caricamento voluminoso, se il server lo accetterà.

Vedi anche:
Definito in RFC 9110

Significato

Il server cambia protocollo su richiesta del client, ad esempio da HTTP a WebSocket. A questo scopo, il client ha inviato l'header «Upgrade».

Vedi anche:
Definito in RFC 9110

Significato

Il server sta ancora elaborando la richiesta e non l'ha completata. Il codice proviene da WebDAV e impedisce un timeout durante le operazioni lunghe. È considerato obsoleto e ormai è molto raro.

Definito in RFC 2518

Significato

Il server invia indicazioni preliminari, per esempio header «Link» per fogli di stile o script, mentre prepara la risposta vera e propria. Il browser può già caricare questi file. È un'indicazione, non un errore.

Definito in RFC 8297

Significato

La richiesta è riuscita. Con GET, la risposta contiene la risorsa richiesta; con POST, il risultato dell'azione. È il caso normale per ogni pagina funzionante.

Per l'ottimizzazione per i motori di ricerca: Un 200 indica solo che il server risponde, non che il contenuto sia corretto. Una pagina di errore restituita con 200 è detta «Soft 404» e confonde i motori di ricerca.
Vedi anche:
Definito in RFC 9110

Significato

La richiesta è riuscita e ha creato una nuova risorsa. È tipico di una richiesta POST a un'API. L'header «Location» indica l'indirizzo della nuova risorsa.

Vedi anche:
Definito in RFC 9110

Significato

Il server ha accettato la richiesta, ma non ha ancora finito di elaborarla. Fornirà il risultato in seguito, per esempio tramite una verifica dello stato o un webhook. È tipico delle attività in background.

Vedi anche:
Definito in RFC 9110

Significato

La richiesta è riuscita, ma i dati non provengono direttamente dal server di origine: arrivano da un proxy che potrebbe averli modificati. È un caso raro.

Definito in RFC 9110

Significato

La richiesta è riuscita, ma la risposta è intenzionalmente priva di body. È comune con DELETE o PUT e con le richieste CORS preflight (OPTIONS). Chi vuole leggere la risposta come JSON deve gestire il body vuoto.

Vedi anche:
Definito in RFC 9110

Significato

La richiesta è riuscita. Il client deve reimpostare la vista, ad esempio svuotare un modulo. La risposta non ha un body. È usato raramente.

Definito in RFC 9110

Significato

Il server fornisce solo la parte richiesta di un file perché il client ha inviato un header «Range». Viene usato per lo streaming video, i download ripresi dopo una pausa e i file di grandi dimensioni.

Vedi anche:
Definito in RFC 9110

Significato

La risposta contiene più codici di stato per diverse operazioni parziali, in formato XML. Proviene da WebDAV e compare nella sincronizzazione di calendari, contatti e file.

Definito in RFC 4918

Significato

I membri di un collegamento WebDAV sono già stati elencati in una parte precedente della stessa risposta e non vengono ripetuti. Caso molto raro.

Definito in RFC 5842

Significato

Il server ha risposto alla richiesta con un Delta-Encoding: la risposta è il risultato di una o più manipolazioni dell'istanza sulla risorsa corrente. Non è usato nella pratica.

Definito in RFC 3229

Significato

Per la richiesta sono disponibili più risposte, per esempio lo stesso file in diversi formati o lingue. Il client o l'utente deve sceglierne una. Poco usato nella pratica.

Vedi anche:
Definito in RFC 9110

Significato

Reindirizzamento permanente: la risorsa ha un nuovo indirizzo, indicato nell'header «Location». Browser e motori di ricerca dovranno usare d'ora in poi solo il nuovo URL.

Cause tipiche

  • Migrazione di dominio o URL, ad esempio da http a https o da www al dominio principale
  • Una pagina è stata rinominata o spostata
  • Si applica una regola di reindirizzamento in nginx, Apache o nel CMS

Come puoi risolvere il problema

  • Inserisci direttamente il link all'URL di destinazione per evitare del tutto il reindirizzamento.
  • Riduci le catene di reindirizzamenti (A, B, C) a un solo passaggio.
  • In caso di loop (ERR_TOO_MANY_REDIRECTS), confronta le regole per http/https e www: spesso il server e il CMS sono in conflitto.
  • I browser memorizzano i reindirizzamenti 301 molto a lungo. Verifica le modifiche in una finestra in incognito o con curl -I.

Configurazione e comandi (esempi)

nginx
return 301 https://example.com$request_uri;
Apache
Redirect 301 /alte-seite https://example.com/neue-seite
Per l'ottimizzazione per i motori di ricerca: Un 301 trasferisce i segnali di posizionamento dal vecchio URL al nuovo. Usalo per ogni trasferimento permanente ed evita le catene di reindirizzamenti.
Vedi anche:
Definito in RFC 9110

Significato

Reindirizzamento temporaneo: la risorsa è provvisoriamente disponibile a un altro indirizzo. Il client deve seguire l’header «Location» per questa richiesta, ma continuare a usare l’URL originale in futuro. Alcuni client trasformano una richiesta POST in GET.

Cause tipiche

  • Reindirizzamento temporaneo, ad esempio per una campagna o una manutenzione
  • Reindirizzamento del login a una pagina di accesso
  • Reindirizzamento per lingua o Paese
  • Impostato erroneamente, benché lo spostamento sia permanente

Come puoi risolvere il problema

  • Segnala i trasferimenti permanenti con 301 o 308, altrimenti i motori di ricerca manterranno il vecchio URL.
  • Se vuoi mantenere il metodo, usa 307 (temporaneo) o 308 (permanente).

Configurazione e comandi (esempi)

nginx
return 302 https://example.com/sommer-angebot;
Apache
Redirect 302 /angebot https://example.com/sommer-angebot
Per l'ottimizzazione per i motori di ricerca: Con un 302, il vecchio URL rimane nell'indice finché il reindirizzamento è considerato temporaneo. Se lo usi per un trasferimento permanente, il posizionamento passa al nuovo URL solo lentamente.
Vedi anche:
Definito in RFC 9110

Significato

Reindirizzamento con GET: il client deve recuperare il risultato a un altro URL tramite GET. Si usa tipicamente dopo un POST (Post/Redirect/Get), per evitare che ricaricando la pagina il modulo venga inviato di nuovo.

Vedi anche:
Definito in RFC 9110

Significato

La risorsa non è cambiata dall'ultima richiesta. Il server non invia un body e il browser usa la copia nella cache. A tale scopo, il browser ha inviato «If-None-Match» (ETag) o «If-Modified-Since». Questo riduce il traffico e velocizza la pagina.

Vedi anche:
Definito in RFC 9110

Significato

Reindirizzamento temporaneo come il 302, ma il metodo HTTP e il corpo restano invariati: una richiesta POST rimane POST.

Cause tipiche

  • Per i reindirizzamenti HSTS da http a https, Chrome mostra «307 Internal Redirect» negli strumenti di sviluppo, anche se il server non ha inviato nulla
  • Un server reindirizza temporaneamente una richiesta API e vuole conservarne il metodo

Come puoi risolvere il problema

  • Se il reindirizzamento è permanente, usa 308 anziché 307.

Configurazione e comandi (esempi)

nginx
return 307 https://example.com$request_uri;
Apache
Redirect 307 /alt https://example.com/neu
Vedi anche:
Definito in RFC 9110

Significato

Reindirizzamento permanente come 301, ma il metodo HTTP e il body rimangono invariati: un POST resta un POST. Adatto ai trasferimenti permanenti delle API e ai moduli che non devono perdere i dati.

Configurazione e comandi (esempi)

nginx
return 308 https://example.com$request_uri;
Apache
Redirect 308 /alt https://example.com/neu
Per l'ottimizzazione per i motori di ricerca: Per i motori di ricerca, 308 si comporta come 301 e trasferisce il posizionamento al nuovo indirizzo.
Vedi anche:
Definito in RFC 9110

Significato

Il server non comprende la richiesta perché è malformata: sintassi non valida, header danneggiati o un cookie troppo grande. Dal punto di vista del server, l'errore è del client.

Cause tipiche

  • Caratteri non validi o URL codificato in modo errato, ad esempio uno spazio o un % non seguito da due cifre esadecimali
  • Cookie troppo grandi o danneggiati; con nginx viene visualizzato «Request Header Or Cookie Too Large»
  • Corpo JSON non valido o campi obbligatori mancanti in un'API
  • Header Host o Content-Length errati, spesso a causa di un proxy

Come puoi risolvere il problema

  • Elimina i cookie del dominio nel browser e ricarica la pagina.
  • Controlla l'URL e codifica i caratteri speciali, ad esempio con URL Encoder.
  • Confronta il corpo della richiesta con la documentazione dell'API.
  • Se gli header sono troppo grandi: aumenta i buffer del server.

Configurazione e comandi (esempi)

nginx
large_client_header_buffers 4 16k;
Vedi anche:
Definito in RFC 9110

Significato

La richiesta richiede un'autenticazione valida. Il client non ha effettuato l'accesso oppure le sue credenziali non sono valide. Il server invia l'header «WWW-Authenticate», che indica il metodo richiesto. Il nome è fuorviante: significa «non autenticato», non «non autorizzato» (che corrisponde a 403).

Cause tipiche

  • Token, password o chiave API assenti o scaduti
  • Header Authorization errato, ad esempio «Bearer» mancante prima del token
  • Protezione HTTP Basic (.htpasswd) per la pagina o la directory

Come puoi risolvere il problema

  • Controlla le credenziali di accesso e la scadenza del token.
  • Controlla il formato dell'header Authorization.
  • Per Basic Auth, controlla l'utente nel file .htpasswd e il percorso del file nella configurazione.

Configurazione e comandi (esempi)

nginx
auth_basic "Geschützter Bereich";
auth_basic_user_file /etc/nginx/.htpasswd;
Apache
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Vedi anche:
Definito in RFC 9110

Significato

Riservato a futuri sistemi di pagamento e mai standardizzato. Alcuni servizi lo usano comunque, ad esempio quando un abbonamento è scaduto o occorre pagare una quota API.

Come puoi risolvere il problema

  • Controlla lo stato della fattura o dell'abbonamento presso il fornitore.
  • Consulta la documentazione API del servizio: ne definisce il significato.
Vedi anche:
Definito in RFC 9110

Significato

Il server comprende la richiesta, ma la rifiuta. A differenza del 401, di solito effettuare nuovamente l'accesso non aiuta: l'accesso non è consentito a questa identità o a questo indirizzo.

Cause tipiche

  • I permessi o il proprietario del file non sono corretti: l’utente del web server non può leggere il file
  • Nella directory manca un documento index e l'elenco delle directory è disabilitato
  • Blocco IP, regola firewall o WAF oppure blocco geografico
  • Una regola nel file .htaccess o nella configurazione nginx vieta l'accesso (deny all, Require all denied)
  • Un modulo di sicurezza come ModSecurity o Fail2ban blocca la richiesta

Come puoi risolvere il problema

  • Controlla i permessi: di solito 755 per le directory e 644 per i file, con un proprietario appropriato per l’utente del web server. Il calcolatore CHMOD converte i valori numerici.
  • Crea un file index (index.html, index.php) oppure imposta la direttiva index.
  • Consulta il log degli errori del server web: vi trovi la causa esatta, per esempio «directory index of … is forbidden».
  • Controlla i blocchi IP e le regole WAF.

Configurazione e comandi (esempi)

Shell
namei -l /var/www/html/index.html
nginx
index index.html index.php;
Apache
<Directory /var/www/html>
    Require all granted
</Directory>
Vedi anche:
Definito in RFC 9110

Significato

Il server è raggiungibile, ma non riconosce l'indirizzo richiesto. La risorsa non è stata trovata. Il server non indica se non è mai esistita o se manca solo temporaneamente.

Cause tipiche

  • Errore di battitura o link obsoleto
  • Pagina eliminata, spostata o rinominata senza reindirizzamento
  • Percorso dei documenti errato nel server web (root o alias) oppure maiuscole e minuscole errate, che Linux distingue
  • Regole di rewrite mancanti, ad esempio per i permalink di WordPress o una Single-Page App
  • Il file non è stato caricato durante il deployment

Come puoi risolvere il problema

  • Controlla il percorso e il nome del file, rispettando maiuscole e minuscole.
  • Imposta try_files in nginx affinché i permalink e le applicazioni a pagina singola funzionino: try_files $uri $uri/ /index.php?$args; oppure /index.html.
  • Reindirizza le pagine spostate al nuovo indirizzo con un redirect 301.
  • Configura una pagina 404 personalizzata con ricerca e link.

Configurazione e comandi (esempi)

nginx
error_page 404 /404.html;
Apache
ErrorDocument 404 /404.html
Per l'ottimizzazione per i motori di ricerca: Singole pagine 404 non danneggiano il posizionamento. Sono importanti le pagine con backlink o traffico: le reindirizzi con un 301. Evita le pagine di errore restituite con codice 200 («Soft 404»).
Vedi anche:
Definito in RFC 9110

Significato

La risorsa esiste, ma non per questo metodo HTTP (GET, POST, PUT, DELETE e così via). La risposta deve contenere un header «Allow» con i metodi consentiti.

Cause tipiche

  • Richiesta POST a una route che accetta solo GET, o viceversa
  • nginx risponde con 405 a una richiesta POST su un file statico
  • Un reindirizzamento 301 o 302 ha trasformato la richiesta POST in GET
  • Il server web o il WAF bloccano metodi come PUT e DELETE

Come puoi risolvere il problema

  • Leggi l'header «Allow»: contiene i metodi consentiti.
  • Controlla route e controller nell'applicazione.
  • Usa 307 o 308 invece di 301 o 302 se il metodo deve essere mantenuto durante il reindirizzamento.
  • Utilizza direttamente l'indirizzo https definitivo, così nessun reindirizzamento modificherà il metodo.
Vedi anche:
Definito in RFC 9110

Significato

Il server non può fornire una risposta in un formato consentito dagli header «Accept» del client, per esempio per tipo di contenuto, lingua o set di caratteri. Anche alcuni Web Application Firewall (ModSecurity) bloccano le richieste con questo codice.

Cause tipiche

  • L'header Accept richiede, per esempio, solo application/xml, ma il server fornisce solo JSON
  • Una regola di ModSecurity ha classificato la richiesta come sospetta, spesso nel caso di script senza User-Agent

Come puoi risolvere il problema

  • Modifica l'header Accept oppure lo ometti.
  • Per ModSecurity, consulta l'audit log e verifica la regola che ha causato il problema.
Vedi anche:
Definito in RFC 9110

Significato

Come 401, ma l'autenticazione è richiesta da un server proxy, non dal server di destinazione. A tale scopo, il proxy invia l'header «Proxy-Authenticate».

Cause tipiche

  • Un proxy aziendale o scolastico richiede l'accesso
  • Credenziali del proxy errate nelle impostazioni di sistema o in curl

Come puoi risolvere il problema

  • Inserisci le credenziali del proxy, ad esempio con curl usando -x benutzer:passwort@proxy:port.
  • Chiedi le credenziali corrette al reparto IT o al provider del proxy.
Vedi anche:
Definito in RFC 9110

Significato

Il server ha atteso troppo a lungo la richiesta completa del client e ha chiuso la connessione.

Cause tipiche

  • Connessione del client lenta o instabile
  • Un caricamento di grandi dimensioni si interrompe
  • Un proxy o un load balancer mantiene aperte le connessioni per troppo poco tempo
  • Il browser ha aperto una connessione in anticipo, ma non l'ha mai usata

Come puoi risolvere il problema

  • Controlla la connessione e ripeti la richiesta.
  • Aumenta i timeout sul server.
  • Per gli upload: riduci le dimensioni dei file o caricali in più parti.

Configurazione e comandi (esempi)

nginx
client_header_timeout 60s;
client_body_timeout 60s;
Apache
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
Vedi anche:
Definito in RFC 9110

Significato

La richiesta è in conflitto con lo stato attuale della risorsa, ad esempio per modifiche simultanee o per una voce già esistente. Il client può risolvere il conflitto e riprovare.

Cause tipiche

  • Esiste già un valore che deve essere univoco, per esempio un indirizzo e-mail, un nome utente o un nome di dominio
  • Due utenti modificano la stessa risorsa; la versione non corrisponde più
  • La risorsa non può essere modificata o eliminata nel suo stato attuale

Come puoi risolvere il problema

  • Ricarica lo stato attuale e applica nuovamente la tua modifica.
  • Consulta il corpo della risposta: le API ben progettate vi descrivono con precisione il conflitto.
Vedi anche:
Definito in RFC 9110

Significato

La risorsa esisteva, ma è stata rimossa intenzionalmente e non tornerà. A differenza di 404, il server indica che la rimozione è definitiva.

Cause tipiche

  • Il contenuto è stato rimosso intenzionalmente, ad esempio un'offerta scaduta
  • Una regola del server restituisce 410 per i vecchi URL

Come puoi risolvere il problema

  • Se esiste una pagina sostitutiva, effettua un reindirizzamento 301.
  • Per gli URL eliminati definitivamente, restituisci intenzionalmente il codice 410.

Configurazione e comandi (esempi)

nginx
location = /alte-seite {
    return 410;
}
Apache
Redirect gone /alte-seite
Per l'ottimizzazione per i motori di ricerca: Con 410 comunichi chiaramente ai motori di ricerca che la pagina è stata rimossa intenzionalmente. Google tratta però 404 e 410 in modo simile: la differenza è minima.
Vedi anche:
Definito in RFC 9110

Significato

Il server richiede l'header «Content-Length», assente nella richiesta. Accetta il body solo se ne conosce la lunghezza.

Cause tipiche

  • Un client invia il body a parti (chunked) a un server che non lo accetta
  • Uno script o un proxy omette l'header

Come puoi risolvere il problema

  • Imposta Content-Length oppure usa un client HTTP che invii automaticamente l'header.
  • Controlla le impostazioni del proxy per il buffering delle richieste.
Vedi anche:
Definito in RFC 9110

Significato

Una condizione nell'header della richiesta (If-Match, If-Unmodified-Since e così via) non è soddisfatta. Il server quindi non esegue la modifica. In questo modo si evita di sovrascrivere altre modifiche.

Cause tipiche

  • La risorsa è cambiata da quando il client ha caricato l'ETag
  • ETag obsoleto in If-Match

Come puoi risolvere il problema

  • Ricarica la risorsa, acquisisci il nuovo ETag e invia nuovamente la modifica.
Vedi anche:
Definito in RFC 9110

Significato

Il corpo della richiesta supera la dimensione accettata dal server. Succede spesso con il caricamento di file. In precedenza, il codice si chiamava «Payload Too Large» e, prima ancora, «Request Entity Too Large».

Cause tipiche

  • nginx: client_max_body_size è impostato per impostazione predefinita a soli 1 MB
  • Apache: LimitRequestBody è impostato
  • PHP: upload_max_filesize o post_max_size sono troppo bassi
  • Un CDN o un proxy a monte limita la dimensione

Come puoi risolvere il problema

  • Aumenta il limite nella configurazione e ricarica il server (nginx -s reload).
  • Aumenta upload_max_filesize e post_max_size nel file php.ini. post_max_size deve essere almeno pari a upload_max_filesize.
  • Controlla ogni livello della catena: CDN, proxy, server web e PHP. Prevale il limite più basso.

Configurazione e comandi (esempi)

nginx
client_max_body_size 50M;
Apache
LimitRequestBody 52428800
Vedi anche:
Definito in RFC 9110

Significato

L'URL è più lungo di quanto il server possa elaborare. Di solito è dovuto a un errore nell'applicazione, non a un indirizzo reale.

Cause tipiche

  • Moltissimi parametri in una richiesta GET
  • Un ciclo di reindirizzamento aggiunge altri parametri a ogni passaggio
  • Grandi quantità di dati vengono trasmesse tramite URL anziché tramite POST

Come puoi risolvere il problema

  • Invia i dati di grandi dimensioni tramite POST.
  • Elimina il ciclo di reindirizzamento.
  • Se necessario, aumenta il limite del server.

Configurazione e comandi (esempi)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestLine 16384
Vedi anche:
Definito in RFC 9110

Significato

Il server non riconosce il formato del body inviato (header «Content-Type»). Per esempio, elabora solo JSON ma riceve dati di un modulo.

Cause tipiche

  • L'header Content-Type manca o è errato, ad esempio application/json invece di text/plain
  • Il server richiede multipart/form-data per i caricamenti

Come puoi risolvere il problema

  • Imposta Content-Type in base al body.
  • Consulta la documentazione API.
Vedi anche:
Definito in RFC 9110

Significato

L'intervallo richiesto (header «Range») è fuori dal file. Il server indica la dimensione effettiva in «Content-Range».

Cause tipiche

  • Un download riprende da un offset, ma il file si è ridotto o è stato sostituito
  • Un download manager difettoso

Come puoi risolvere il problema

  • Elimina il download parziale e ricomincia.
Vedi anche:
Definito in RFC 9110

Significato

Il server non può soddisfare l'aspettativa specificata nell'header «Expect». Di solito si tratta di «100-continue», non supportato da un proxy o dal server.

Cause tipiche

  • Un proxy o un server obsoleto che non supporta Expect
  • Per le richieste POST di grandi dimensioni, curl invia automaticamente Expect: 100-continue

Come puoi risolvere il problema

  • Disattiva l'header in curl con -H 'Expect:'.
  • Aggiorna il proxy.

Configurazione e comandi (esempi)

Shell
curl -H 'Expect:' -d @datei.json https://example.com/api
Vedi anche:
Definito in RFC 9110

Significato

Uno scherzo del pesce d'aprile tratto da RFC 2324 (Hyper Text Coffee Pot Control Protocol): una teiera si rifiuta di preparare il caffè. Il codice è riservato e nella pratica viene usato per scherzo o per respingere i bot.

Definito in RFC 2324

Significato

La richiesta è stata inviata a un server che non può rispondere per questa combinazione di schema e host. Succede con HTTP/2 quando un browser riutilizza una connessione per più nomi host.

Cause tipiche

  • Più domini su un unico indirizzo IP con un certificato condiviso, ma una configurazione diversa per ciascun host
  • SNI e header Host non corrispondono

Come puoi risolvere il problema

  • Uniforma i certificati e gli host virtuali dei domini interessati.
  • Controlla con curl --resolve quale host risponde.
Vedi anche:
Definito in RFC 9110

Significato

Il server comprende la richiesta e il formato è corretto, ma il contenuto non è valido, per esempio perché manca un campo obbligatorio o un valore è fuori dall'intervallo consentito. In precedenza il codice si chiamava «Unprocessable Entity». Molti framework lo usano per gli errori di convalida.

Cause tipiche

  • La convalida non riesce, ad esempio per il formato dell'email, la lunghezza o un campo obbligatorio
  • Un errore logico, ad esempio una data di fine precedente alla data di inizio

Come puoi risolvere il problema

  • Consulta il corpo della risposta: vi trovi i campi e i messaggi di errore.
  • Confronta i dati inseriti con la documentazione dell'API.
Vedi anche:
Definito in RFC 9110

Significato

La risorsa è bloccata, ad esempio perché è stata estratta tramite WebDAV per la modifica.

Come puoi risolvere il problema

  • Rimuovi il blocco (UNLOCK) o attendi che l'altro utente abbia finito.
Vedi anche:
Definito in RFC 4918

Significato

La richiesta non è riuscita perché è fallita un'altra richiesta da cui dipende. Il codice proviene da WebDAV ed è usato anche dagli strumenti di orchestrazione.

Vedi anche:
Definito in RFC 4918

Significato

Il server non vuole elaborare una richiesta che potrebbe essere riprodotta (attacco replay). Si verifica con TLS 1.3 Early Data (0-RTT).

Definito in RFC 8470

Significato

Il server richiede un protocollo diverso, indicato nell'header «Upgrade». Per esempio, una richiesta tramite HTTP/1.1 quando il server richiede TLS o HTTP/2.

Cause tipiche

  • Versione TLS obsoleta
  • L'API è accessibile solo tramite WebSocket o HTTPS

Come puoi risolvere il problema

  • Aggiorna il client e la libreria.
  • Invia la richiesta tramite il protocollo richiesto.
Vedi anche:
Definito in RFC 9110

Significato

Il server richiede una condizione (If-Match) per evitare di sovrascrivere accidentalmente una versione obsoleta.

Cause tipiche

  • Una richiesta PUT senza If-Match su una risorsa protetta

Come puoi risolvere il problema

  • Recupera l'ETag della risorsa e lo inserisci nell'header If-Match.
Vedi anche:
Definito in RFC 6585

Significato

Il client ha inviato troppe richieste in un determinato intervallo (rate limiting). L'header «Retry-After» indica quando può riprovare.

Cause tipiche

  • Limite API o di accesso superato, ad esempio a causa di un ciclo nello script
  • Un bot, crawler o scraper genera un carico elevato
  • Interviene una protezione contro gli attacchi brute force (Fail2ban, WAF)
  • Più utenti condividono un indirizzo IP (NAT, VPN) e vengono conteggiati insieme

Come puoi risolvere il problema

  • Attendi il tempo indicato da Retry-After e riprova a intervalli crescenti (Exponential Backoff).
  • Raggruppa le richieste e memorizza le risposte nella cache.
  • Se gestisci il servizio, imposta limiti per IP o API-Key e rispondi con 429; nginx usa 503 per impostazione predefinita.
  • Consenti l'accesso ai crawler legittimi.

Configurazione e comandi (esempi)

nginx
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        limit_req_status 429;
    }
}
Per l'ottimizzazione per i motori di ricerca: Googlebot considera il codice 429 un errore del server e rallenta la scansione. Imposta i limiti in modo da non bloccare continuamente i motori di ricerca.
Vedi anche:
Definito in RFC 6585

Significato

Gli header della richiesta sono troppo grandi, complessivamente o singolarmente. La causa più comune è un numero eccessivo di cookie o cookie troppo grandi.

Cause tipiche

  • Cookie accumulati (tracciamento, sessioni) su un dominio
  • Un header Authorization molto lungo, ad esempio un JWT di grandi dimensioni
  • Un ciclo di reindirizzamento aggiunge sempre nuovi cookie

Come puoi risolvere il problema

  • Elimina i cookie del dominio.
  • Aumenta la dimensione dei buffer degli header del server.
  • Mantieni JWT e header di piccole dimensioni.

Configurazione e comandi (esempi)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestFieldSize 16384
Vedi anche:
Definito in RFC 6585

Significato

Un codice specifico di nginx che non viene mai inviato al client: nginx chiude la connessione senza rispondere. Compare solo nell'access log. Gli amministratori usano return 444; per respingere bot e richieste con host non valido.

Cause tipiche

  • return 444; nella configurazione nginx, ad esempio nel server predefinito

Come puoi risolvere il problema

  • Se è voluto, non devi fare nulla.
  • Se non è voluto, controlla la regola con nginx -T e cerca return 444.

Configurazione e comandi (esempi)

nginx
server {
    listen 80 default_server;
    return 444;
}
Vedi anche:
Definito in nginx

Significato

La risorsa è bloccata per motivi legali, ad esempio per un'ordinanza del tribunale, censura o geoblocking. Il codice richiama il romanzo «Fahrenheit 451» di Ray Bradbury.

Cause tipiche

  • Blocco su ordine, per esempio per violazione del diritto d'autore o su disposizione di un'autorità
  • Il provider blocca alcune regioni per obblighi legali

Come puoi risolvere il problema

  • Il gestore indica di solito il motivo nel corpo della risposta.
  • Chiedi al gestore: aggirare il blocco potrebbe essere illegale.
Vedi anche:
Definito in RFC 7725

Significato

Il client ha chiuso la connessione prima che nginx potesse inviare la risposta. Il codice compare solo nel log di nginx: non è un vero codice HTTP.

Cause tipiche

  • Un utente interrompe il caricamento della pagina o chiude la scheda
  • Il timeout del client è più breve del tempo di risposta del server
  • Un load balancer o un proxy a monte interrompe la connessione troppo presto

Come puoi risolvere il problema

  • Riduci il tempo di risposta dell’applicazione, ad esempio per le query lente al database.
  • Allinea i timeout di client, proxy e server.
Vedi anche:
Definito in nginx

Significato

Un errore generico del server: il server ha riscontrato un problema imprevisto e non ha potuto soddisfare la richiesta. Il codice non indica cosa sia andato storto; la causa è riportata nel registro degli errori.

Cause tipiche

  • Errore nel codice dell'applicazione, ad esempio un errore irreversibile PHP o un'eccezione non gestita
  • File .htaccess o configurazione del server web non validi
  • Permessi dei file errati o proprietario errato degli script
  • Il database non è raggiungibile oppure le credenziali di accesso non sono corrette
  • È stato raggiunto il limite di memoria PHP (memory_limit) o max_execution_time
  • Manca un'estensione PHP o la versione PHP non è compatibile con il plugin

Come puoi risolvere il problema

  • Consulta il log degli errori: vi sono indicati il file e la riga dell'errore.
  • Annulla le modifiche degli ultimi minuti (plugin, aggiornamento, .htaccess).
  • Verifica la configurazione con nginx -t o apachectl configtest.
  • Attiva la modalità debug (WP_DEBUG, APP_DEBUG) solo in locale o per poco tempo, mai in modo permanente su un sistema di produzione.

Configurazione e comandi (esempi)

nginx
tail -n 50 /var/log/nginx/error.log
Apache
tail -n 50 /var/log/apache2/error.log
Per l'ottimizzazione per i motori di ricerca: In presenza di errori 5xx persistenti, Googlebot passa meno spesso. Se un errore dura per giorni, gli URL potrebbero essere rimossi dall'indice.
Vedi anche:
Definito in RFC 9110

Significato

Il server non riconosce il metodo richiesto o non può eseguirlo. A differenza del 405, non riguarda una singola risorsa, ma la mancanza di supporto in generale.

Cause tipiche

  • Un metodo HTTP insolito o scritto in modo errato
  • Il server o il proxy non supporta la funzione, ad esempio a causa di un software obsoleto

Come puoi risolvere il problema

  • Controlla il metodo utilizzato.
  • Aggiorna il software del server.
Vedi anche:
Definito in RFC 9110

Significato

Un server che funge da gateway o proxy (nginx, Apache, load balancer, CDN) ha ricevuto una risposta non valida, o nessuna risposta, dal server a valle. L'errore è tra i server, non dipende dal visitatore.

Cause tipiche

  • Il servizio backend (PHP-FPM, Node.js, Gunicorn, container Docker) non è in esecuzione o si è arrestato
  • Upstream errato: la porta o il socket in proxy_pass o fastcgi_pass non corrisponde
  • Il backend chiude la connessione prematuramente, ad esempio per problemi di memoria o un arresto anomalo
  • Un firewall o SELinux blocca la connessione al backend
  • Un CDN non riesce a raggiungere correttamente il server di origine

Come puoi risolvere il problema

  • Controlla lo stato del servizio backend e riavvialo (systemctl status, docker ps).
  • Controlla se un servizio è in ascolto all'indirizzo upstream (ss -tlnp).
  • Consulta il log degli errori del server web: «connect() failed (111: Connection refused) while connecting to upstream» indica la destinazione.
  • Controlla il percorso del socket e i permessi di PHP-FPM.
  • La RAM è sufficiente? L'OOM killer spesso termina per primo il processo backend.

Configurazione e comandi (esempi)

Shell
ss -tlnp | grep :3000
nginx
tail -n 50 /var/log/nginx/error.log
Shell
dmesg | grep -i "out of memory"
Per l'ottimizzazione per i motori di ricerca: Un breve errore 502 incide poco sui motori di ricerca. Se persiste, Googlebot tratta la pagina come qualsiasi altro errore 5xx e ne riduce la scansione.
Vedi anche:
Definito in RFC 9110

Significato

Il server non è temporaneamente in grado di elaborare la richiesta, di solito per sovraccarico o manutenzione. Può indicare con «Retry-After» quando sarà nuovamente disponibile.

Cause tipiche

  • Modalità manutenzione, per esempio di WordPress o Laravel, oppure manutenzione programmata
  • Sovraccarico: troppe richieste o processi simultanei; ad esempio, è stato raggiunto pm.max_children in PHP-FPM
  • Un servizio backend dietro un proxy o un load balancer non è raggiungibile
  • Per impostazione predefinita, nginx risponde con 503 quando vengono superati i limiti limit_req e limit_conn
  • Raggiunti i limiti di risorse dell'hosting (CPU, RAM, processi)

Come puoi risolvere il problema

  • Disattiva la modalità manutenzione. Verifica la presenza di un file .maintenance (WordPress) o del comando php artisan down (Laravel).
  • Controlla l'utilizzo delle risorse (top, free -m) e aumenta i limiti dei processi, come pm.max_children.
  • Durante la manutenzione programmata, restituisci intenzionalmente 503 con Retry-After.
  • Controlla il log del server web per individuare errori upstream.

Configurazione e comandi (esempi)

nginx
error_page 503 /wartung.html;

location / {
    return 503;
}

location = /wartung.html {
    root /var/www/wartung;
    internal;
    add_header Retry-After 3600 always;
}
Apache
ErrorDocument 503 /wartung.html
Header always set Retry-After "3600"

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/wartung.html
RewriteRule ^ - [R=503,L]
Per l'ottimizzazione per i motori di ricerca: Un breve errore 503 con Retry-After è la soluzione corretta per i motori di ricerca durante la manutenzione. Se dura per giorni, gli URL possono uscire dall'indice.
Vedi anche:
Definito in RFC 9110

Significato

Il gateway o il proxy non ha ricevuto in tempo una risposta dal server a monte. A differenza dell'errore 502, la risposta non è invalida, ma troppo lenta.

Cause tipiche

  • Un'applicazione lenta: query pesante al database, report, importazione o chiamata a un'API esterna
  • Il backend è sovraccarico: tutti i worker PHP-FPM sono occupati
  • I valori di timeout del proxy sono inferiori alla durata della richiesta
  • Un problema di rete tra proxy e backend

Come puoi risolvere il problema

  • Individui query e script lenti e li velocizzi (Slow Query Log, Profiler).
  • Sposta le attività lunghe nei processi in background.
  • Aumenta in modo coordinato i timeout: proxy_read_timeout, fastcgi_read_timeout e max_execution_time in PHP.
  • Controlla la capacità del backend (worker, memoria RAM).

Configurazione e comandi (esempi)

nginx
proxy_read_timeout 120s;
fastcgi_read_timeout 120s;
Apache
ProxyTimeout 120
Vedi anche:
Definito in RFC 9110

Significato

Il server non supporta la versione HTTP usata nella richiesta.

Cause tipiche

  • Un client o proxy molto vecchio o difettoso usa una versione HTTP insolita
  • Il sistema di destinazione supporta solo una versione specifica

Come puoi risolvere il problema

  • Aggiorna il client o forza HTTP/1.1; con curl, usa --http1.1.
Vedi anche:
Definito in RFC 9110

Significato

La configurazione del server per la negoziazione dei contenuti è errata: la variante selezionata rimanda a sua volta a una negoziazione. Si verifica praticamente solo in caso di configurazioni errate.

Vedi anche:
Definito in RFC 2295

Significato

Il server non ha spazio di archiviazione sufficiente per completare la richiesta.

Cause tipiche

  • Disco rigido, quota o inode esauriti
  • Non è più possibile salvare il caricamento

Come puoi risolvere il problema

  • Controlla lo spazio di archiviazione con df -h e df -i ed elimina vecchi log, Backup e cache.
  • Aumenta la quota.

Configurazione e comandi (esempi)

Shell
df -h && df -i
Vedi anche:
Definito in RFC 4918

Significato

Il server ha rilevato un ciclo infinito durante l'elaborazione.

Cause tipiche

  • Un binding WebDAV circolare
  • Una struttura di directory con un ciclo di link simbolici

Come puoi risolvere il problema

  • Controlla i bind mount e i link simbolici.
Vedi anche:
Definito in RFC 5842

Significato

La richiesta non contiene l'estensione richiesta dal server secondo RFC 2774. Il codice è storico e praticamente non compare mai.

Definito in RFC 2774

Significato

Il client deve autenticarsi sulla rete prima di ottenere l'accesso. Viene inviato da un captive portal, ad esempio nelle reti Wi-Fi di hotel, aeroporti o bar.

Cause tipiche

  • Un captive portal della rete Wi-Fi richiede l'accesso o il consenso

Come puoi risolvere il problema

  • Apri una pagina qualsiasi tramite http, ad esempio http://neverssl.com, per visualizzare il portale.
  • Accedi al portale.
Vedi anche:
Definito in RFC 6585

Significato

Cloudflare ha ricevuto dal server di origine una risposta che non può elaborare: vuota, interrotta o con header non validi. È un errore generico di Cloudflare.

Cause tipiche

  • Il server di origine si arresta in modo anomalo durante la richiesta, ad esempio a causa di un errore PHP
  • Gli header della risposta superano 32 KB, spesso a causa di troppi cookie
  • La risposta è vuota oppure la connessione è stata chiusa senza risposta
  • Un firewall blocca parzialmente gli indirizzi IP di Cloudflare

Come puoi risolvere il problema

  • Consulta il log degli errori del server di origine.
  • Consenti gli intervalli IP di Cloudflare nel firewall e in Fail2ban.
  • Riduci le dimensioni degli header e dei cookie.
Vedi anche:
Definito in Cloudflare

Significato

Cloudflare non è riuscito a stabilire una connessione con il server di origine: la connessione è stata rifiutata. Il sito e Cloudflare sono raggiungibili, ma il tuo server di origine no.

Cause tipiche

  • Il server web (nginx, Apache) non è in esecuzione
  • Un firewall o il provider di hosting blocca gli indirizzi IP di Cloudflare
  • IP di origine o porta errati nelle impostazioni di Cloudflare

Come puoi risolvere il problema

  • Avvia il server web e verifica che sia in ascolto sulle porte 80 e 443.
  • Consenti gli intervalli IP di Cloudflare.
  • Controlla il record DNS A e la porta del server di origine.

Configurazione e comandi (esempi)

Shell
ss -tlnp | grep -E ':(80|443)\b'
Vedi anche:
Definito in Cloudflare

Significato

Cloudflare ha tentato di connettersi al server di origine, ma l'handshake TCP non è stato completato in tempo. È un timeout durante la connessione, prima ancora dell'invio di una richiesta.

Cause tipiche

  • Il server di origine è sovraccarico o offline
  • Un firewall scarta i pacchetti di Cloudflare
  • Indirizzo IP errato o problema di routing

Come puoi risolvere il problema

  • Controlla la raggiungibilità e il carico del server.
  • Consenti gli intervalli IP di Cloudflare nel firewall.
  • Controlla l'indirizzo IP nel record DNS.
Vedi anche:
Definito in Cloudflare

Significato

Cloudflare non riesce a raggiungere il server di origine, per esempio a causa di un errore DNS o dell'assenza di una route.

Cause tipiche

  • Indirizzo IP errato nel record DNS
  • Server o data center offline, problema di routing

Come puoi risolvere il problema

  • Controlla il record DNS.
  • Chiedi al provider di hosting e controlla la rete.
Vedi anche:
Definito in Cloudflare

Significato

Cloudflare è riuscito a connettersi, ma il server di origine non ha fornito una risposta HTTP entro 100 secondi.

Cause tipiche

  • Script, esportazioni o importazioni di lunga durata
  • Un server sovraccarico

Come puoi risolvere il problema

  • Sposta le attività lunghe nei processi in background.
  • Riduci il tempo di risposta.
  • Per le attività lunghe usa lo streaming o le richieste di stato anziché un’unica richiesta.
Vedi anche:
Definito in Cloudflare

Significato

L'handshake TLS tra Cloudflare e il server di origine non è riuscito.

Cause tipiche

  • Il server di origine non offre HTTPS sulla porta 443
  • Non esiste una suite di cifratura o una versione TLS comune
  • SNI mancante o certificato non corrispondente

Come puoi risolvere il problema

  • Controlla la configurazione TLS del server di origine.
  • Scegli la modalità SSL/TLS di Cloudflare adatta al server di origine.
Vedi anche:
Definito in Cloudflare

Significato

Cloudflare non è riuscito a verificare il certificato del server di origine. Si verifica in modalità «Full (strict)».

Cause tipiche

  • Certificato scaduto, autofirmato o non emesso per il dominio
  • Manca un certificato intermedio

Come puoi risolvere il problema

  • Installa un certificato valido (Let's Encrypt o un Cloudflare Origin Certificate).
  • Fornisci la catena completa dei certificati.
Vedi anche:
Definito in Cloudflare

Risultato di esempio

Cosa ti mostra questo riferimento ai codici di stato HTTP

Inserisci un numero o una parola chiave e ottieni subito i codici di stato pertinenti, ciascuno con significato, cause tipiche, soluzione e, se applicabile, un esempio pronto per nginx o Apache. Tre esempi:

Esempio 1: cercare un numero

Input:

502

Output: una voce con questi dati

Codice di stato e nome
502 Bad Gateway
Classe
5xx Errore del server
Significato
Un server che funge da gateway o proxy (nginx, Apache, load balancer, CDN) ha ricevuto una risposta non valida, o nessuna risposta, dal server a valle. L'errore è tra i server, non dipende dal visitatore.
Prima causa tipica
Il servizio backend (PHP-FPM, Node.js, Gunicorn, container Docker) non è in esecuzione o si è arrestato
Primo passo per risolvere il problema
Controlla lo stato del servizio backend e riavvialo (systemctl status, docker ps).
Esempio da copiare (nginx)
tail -n 50 /var/log/nginx/error.log

Risultato in parole: con 502 Bad Gateway, il server dietro il proxy non risponde o fornisce una risposta non valida. La voce elenca 5 cause comuni e 5 passaggi per risolvere il problema, per esempio controllare il servizio backend e leggere il log degli errori. L'errore si verifica tra i server, non sul dispositivo del visitatore.

Esempio 2: cercare una classe

Input:

3xx

Output: tutti i codici della classe 3xx dell’elenco

Risultati della ricerca per 3xx
Codice di statoNome
300Multiple Choices
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect
308Permanent Redirect

Risultato in parole: l’elenco contiene 7 codici della classe 3xx, mancano gli obsoleti 305 e 306. Non tutti reindirizzano: 304, per esempio, rimanda alla cache. Le principali sono 301 (spostamento permanente), 302 (reindirizzamento temporaneo) e 304 (nessuna modifica, usare la cache). Ogni voce spiega quando si verifica e come puoi utilizzarla correttamente.

Esempio 3: cercare una parola chiave

Input:

timeout

Output: prima i risultati migliori

  1. 408 Request Timeout
  2. 504 Gateway Timeout
  3. 524 A Timeout Occurred
  4. 102 Processing
  5. 522 Connection Timed Out

Risultato in parole: 6 voci contengono la parola chiave. Le corrispondenze nel nome sono in cima: 408 Request Timeout, 504 Gateway Timeout, 524 A Timeout Occurred. Seguono le voci in cui «timeout» compare solo nella spiegazione, nelle cause o negli esempi di configurazione.

Come funziona

Come consulti un codice di stato

Quattro passaggi dal numero all'esempio pronto, senza account né download.

Passaggio 1

Inserisci un codice di stato o una parola chiave

Inserisci nel campo di ricerca un numero come 502, un nome come «bad gateway» o una parola chiave come «timeout» o «reindirizzamento». I risultati appaiono immediatamente a ogni carattere.

Passaggio 2

Filtra per classe

Con i filtri puoi selezionare una categoria: 3xx per i reindirizzamenti, 4xx per gli errori client, 5xx per gli errori server. «Ricerche frequenti» mostra i codici più comuni.

Passaggio 3

Espandi voce

Fai clic su un codice per vederne il significato e, quando pertinenti, le cause tipiche, i passaggi per risolvere il problema e gli effetti sulla SEO. «Vedi anche» porta ai codici correlati.

Passaggio 4

Copia e adatta l’esempio

Dove utile, trovi un esempio per nginx, Apache o la shell. Copialo, adatta percorsi e valori al tuo server e ricarica il server web.

Errori frequenti

404, 403, 500, 502, 503: gli errori HTTP più comuni in breve

Risposte brevi per ogni codice di errore. Con «Tutte le cause e le soluzioni» puoi aprire la voce completa nella guida qui sopra.

400

Bad Request

Il server non comprende la richiesta. Le cause più comuni sono un indirizzo malformato, cookie troppo grandi o danneggiati e un header della richiesta non valido. Cancella i cookie del sito e verifica l'indirizzo.

Tutte le cause e le soluzioni

401

Unauthorized

La pagina richiede l'accesso, ma le tue credenziali sono assenti o non valide. Puoi accedere con credenziali corrette, per esempio per una protezione con password tramite .htaccess o per un'API con token.

Tutte le cause e le soluzioni

403

Forbidden

Il server riconosce l'indirizzo, ma ti nega l'accesso. Le cause più comuni sono permessi errati sui file, l'assenza di un documento index, un blocco dell'IP o una regola del firewall.

Tutte le cause e le soluzioni

404

Not Found

A questo indirizzo non c'è nulla: potrebbe esserci un errore di battitura, la pagina potrebbe essere stata eliminata o spostata oppure le maiuscole e le minuscole potrebbero non corrispondere. Puoi reindirizzare le pagine spostate con un 301. Singoli errori 404 non danneggiano il posizionamento.

Tutte le cause e le soluzioni

429

Too Many Requests

Hai inviato troppe richieste in poco tempo. Attendi il periodo indicato nell'header Retry-After, poi riprova aumentando progressivamente l'intervallo tra i tentativi.

Tutte le cause e le soluzioni

500

Internal Server Error

Un errore generico del server. La causa è indicata nel registro degli errori del server web. Spesso si tratta di un errore nel codice, di un file .htaccess difettoso, di permessi errati o di un database irraggiungibile.

Tutte le cause e le soluzioni

502

Bad Gateway

Il proxy o il load balancer non riceve una risposta valida dal backend, di solito perché PHP-FPM, Node.js o il server applicativo non è in esecuzione o si è arrestato in modo anomalo. Verifica il servizio e il relativo log.

Tutte le cause e le soluzioni

503

Service Unavailable

Il server è sovraccarico o in manutenzione e indica che il problema è temporaneo. Per la manutenzione, il codice corretto è 503 con l'header Retry-After.

Tutte le cause e le soluzioni

504

Gateway Timeout

Il backend risponde troppo lentamente e il proxy interrompe l'attesa. Verifica la presenza di query o script lenti e, se necessario, aumenta il timeout; in nginx, proxy_read_timeout.

Tutte le cause e le soluzioni

Panoramica

Le cinque classi dei codici di risposta HTTP

La prima cifra indica il tipo di errore. Così puoi capire, anche senza consultare la documentazione, se il problema riguarda il visitatore o il server.

1xx

Informazioni

La richiesta è stata ricevuta ed è ancora in elaborazione. È un messaggio intermedio, non ancora un risultato.

Frequente:

4 codici in questa documentazione

2xx

Operazione riuscita

La richiesta è stata compresa ed elaborata correttamente. 200 è il caso normale.

Frequente: 200, 201, 204

10 codici in questa documentazione

3xx

Reindirizzamento

Il client deve compiere un altro passaggio, di solito seguire un nuovo indirizzo o usare la cache.

Frequente: 301, 302, 304, 307, 308

7 codici in questa documentazione

4xx

Errore del client

La richiesta non è valida o non è consentita. Dal punto di vista del server, l'errore è del client, ad esempio 404 per un indirizzo sconosciuto.

Frequente: 400, 401, 403, 404, 405, 410, 413, 422, 429

31 codici in questa documentazione

5xx

Errore del server

La richiesta era valida, ma il server non è riuscito a soddisfarla. L'errore è lato server, ad esempio 500, 502 o 503.

Frequente: 500, 502, 503, 504

18 codici in questa documentazione

Reindirizzamenti

301 o 302? Confronto tra i codici di reindirizzamento

Cinque codici indicano un reindirizzamento. Differiscono per due aspetti: se il reindirizzamento è permanente e se il client mantiene il metodo HTTP.

Confronto dei codici di stato dei reindirizzamenti 301, 302, 303, 307 e 308
Codice di statoDurataIl metodo resta invariato
301 Moved PermanentlySpostamento di una pagina o di un dominio, da http a https, da www al dominio principale. Lo standard per la SEO.permanentenon garantito
302 FoundReindirizzamento temporaneo, ad esempio per campagne, login o selezione della lingua.temporaneamentenon garantito
303 See OtherReindirizzare a una pagina dei risultati dopo una richiesta POST (Post/Redirect/Get). Il browser la richiede tramite GET.temporaneamentenon garantito
307 Temporary RedirectReindirizzamento temporaneo di un'API o di un modulo che deve mantenere il metodo.temporaneamentesì
308 Permanent RedirectSpostamento permanente di un'API o della destinazione di un modulo, mantenendo invariato il metodo.permanentesì

Regola pratica: 301 per le pagine normali spostate in modo permanente, 302 per gli spostamenti temporanei. Se una API o un modulo deve mantenere il metodo POST, usa 308 anziché 301 e 307 anziché 302. «Non garantito» significa che i browser spesso trasformano un POST in un GET.

Pratica

Come puoi trovare il codice di stato di una pagina

Nel browser, apri gli strumenti per sviluppatori (F12): nella scheda «Rete» puoi vedere il codice di ogni richiesta. Sul server o nella shell possono aiutarti questi quattro comandi:

Mostra solo gli header di risposta; la prima riga contiene il codice di stato.

curl -I https://example.com/seite

Restituisce solo il codice di stato, utile per script e monitoraggio.

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/seite

Segue i reindirizzamenti e mostra ogni passaggio con codice di stato e destinazione.

curl -sIL https://example.com/alt | grep -iE '^(HTTP|location)'

Conta i codici di stato nell'access log di nginx o Apache (formato combined) e li ordina per frequenza.

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

Scopri di più

Altri strumenti

FAQ

Domande frequenti

Risposte brevi sui codici HTTP più comuni, sulle loro cause e su questa pagina di riferimento.

Un codice di stato HTTP è un numero di tre cifre che un server restituisce per ogni richiesta. Indica se la richiesta è riuscita e, in caso contrario, perché. La prima cifra indica la classe: 1xx informazioni, 2xx successo, 3xx reindirizzamento, 4xx errore del client, 5xx errore del server. I codici di errore HTTP che incontri più spesso sono 400, 401, 403, 404 e 429 per il client, e 500, 502, 503 e 504 per il server. Il filtro «Più cercati» nella guida li mostra insieme ad altri codici comuni.

200 OK significa che la richiesta è riuscita e il server restituisce la pagina o i dati. È la risposta normale per ogni pagina destinata a visitatori e motori di ricerca. Assicurati che le pagine di errore non vengano restituite con 200, altrimenti si creano «soft 404». Codici correlati: 201 Created segnala una risorsa appena creata, 204 No Content una risposta riuscita senza corpo e 304 Not Modified indica che il file non è cambiato e il browser usa la propria copia.

Il server non comprende la richiesta e la rifiuta prima di elaborarla. Le cause tipiche sono un indirizzo con caratteri non validi, cookie troppo grandi o danneggiati, un header troppo grande e un corpo della richiesta formattato male in un'API. Se visiti il sito, cancella i suoi cookie. Se lo gestisci, controlla la richiesta, gli header e il log. Se il formato è corretto ma un valore non è valido, per esempio manca un campo obbligatorio, molte API rispondono invece con 422 Unprocessable Content (in precedenza «Unprocessable Entity»).

Il server è raggiungibile, ma non riconosce l'indirizzo. Verifica prima eventuali errori di digitazione e le maiuscole e minuscole nel nome del file, perché Linux le distingue. Controlla poi il percorso nel server web e, per WordPress o una single-page app, le regole di rewrite (try_files in nginx). Reindirizza le pagine spostate con un 301. Singoli errori 404 non danneggiano il posizionamento, ma le pagine importanti con backlink che non portano più a nulla sì.

401 Unauthorized significa «autenticazione richiesta»: con credenziali valide l'accesso riesce. 403 Forbidden significa «accesso non consentito», anche se hai effettuato l'accesso: il server lo nega comunque. Cause comuni di 403 sono permessi o proprietari dei file errati, un documento indice mancante, blocchi IP e regole WAF. Il calcolatore CHMOD converte permessi come 755 per le directory e 644 per i file. Vai al calcolatore CHMOD

Il codice non rivela la causa: questa si trova nel log degli errori del server web (per nginx /var/log/nginx/error.log, per Apache /var/log/apache2/error.log) o nel log PHP. Tra le cause frequenti ci sono un errore nel codice, un file .htaccess errato, permessi dei file sbagliati, un database irraggiungibile o l'esaurimento del limite di memoria PHP. Annulla l'ultima modifica (plugin, aggiornamento, regola) e verifica la configurazione con nginx -t o apachectl configtest.

502 Bad Gateway: il proxy riceve dal backend una risposta non valida o nessuna risposta, di solito perché il servizio (PHP-FPM, Node.js) non è in esecuzione. 503 Service Unavailable: il server è sovraccarico o in manutenzione e lo segnala direttamente. 504 Gateway Timeout: il backend risponde troppo lentamente, spesso per una query pesante o per sovraccarico. Primo passo in tutti e tre i casi: leggi il log degli errori e controlla il servizio backend. Per la manutenzione programmata, il codice corretto è 503 con l'header «Retry-After», non una pagina di manutenzione con 200.

301 indica uno spostamento permanente: i motori di ricerca adottano il nuovo indirizzo e trasferiscono il posizionamento. 302 indica un reindirizzamento temporaneo: il vecchio indirizzo resta nell’indice. Usi 301 per trasferimenti di domini e pagine e 302 per situazioni temporanee, come le campagne. Se un modulo o un’API deve mantenere il metodo (POST), usi 308 invece di 301 e 307 invece di 302.

Non sono codici dello standard HTTP. I codici da 520 a 526 provengono da Cloudflare e indicano che è Cloudflare, non il visitatore, ad avere un problema con il tuo server di origine: 520 errore sconosciuto, 521 connessione rifiutata, 522 connessione non riuscita, 523 server di origine irraggiungibile, 524 nessuna risposta entro 100 secondi, 525 handshake TLS non riuscito, 526 certificato non valido. Di solito conviene autorizzare gli intervalli IP di Cloudflare nel firewall e controllare il server web e il certificato. 444 e 499 compaiono solo nel log di nginx: con 444 nginx chiude intenzionalmente la connessione senza rispondere; con 499 il client ha chiuso la connessione prima di ricevere la risposta.

Nel browser, premi F12 per aprire gli strumenti per sviluppatori e controlla la colonna «Stato» nella scheda «Rete». Nella shell, curl -I https://example.com mostra le intestazioni e il codice di stato, mentre curl -s -o /dev/null -w "%{http_code}" https://example.com restituisce solo il numero. Con curl -sIL vedi anche tutti i reindirizzamenti lungo il percorso. Questa pagina di riferimento non interroga alcun indirizzo: funziona interamente nel tuo browser. Solo il termine di ricerca e il filtro per classe compaiono nell'URL, così puoi condividere una ricerca. Per verificare una catena di reindirizzamenti, usa il Redirect Checker. Vai al Redirect Checker

Hai altre domande?

Contatta il supporto
Gestisci qualcosa di tuo?

Codice di stato 200 anziché 502: un hosting che rende disponibile la tua applicazione in modo affidabile

Un VPS di ZAP-Hosting mette online la tua applicazione o il tuo progetto in modo affidabile.

4,4/5 Trustpilot32.000+ Server attiviDal 2010

Nessuna configurazione. Nessun rischio. Online in pochi secondi.

Durata flessibileDisdicibile in qualsiasi momentoOnline in 60 secondi

Cerchi altri strumenti? Visualizza tutti gli strumenti per sviluppatori