# Errore 404

L'errore 404, o Not Found (in italiano Non Trovato), è un codice di stato standard del protocollo HTTP. Con esso viene indicato che il client è in grado di comunicare con il server, ma che quest'ultimo non ha trovato ciò che è stato richiesto oppure è stato configurato in modo tale da non poter completare la richiesta. L'errore 404 non deve essere confuso con "server non trovato" o errori simili, dove la connessione al server non può proprio essere stabilita.

## Panoramica

Quando si comunica tramite HTTP, un server deve rispondere a una richiesta, come una richiesta del browser Web per una pagina Web, con un codice di risposta numerico e un messaggio facoltativo, obbligatorio o vietato (in base al codice di stato). Nel codice 404, la prima cifra indica un errore del client, ad esempio un URL (Uniform Resource Locator) digitato in modo errato. Le due cifre seguenti indicano l'errore specifico riscontrato. L'uso di HTTP di codici a tre cifre è simile all'uso di tali codici nei protocolli precedenti come FTP e NNTP. A livello HTTP, un codice di risposta 404 è seguito da una "frase del motivo" leggibile dall'uomo. La specifica HTTP suggerisce la frase "Non trovato" e molti server web per impostazione predefinita emettono una pagina HTML che include sia il codice 404 che la frase "Non trovato". Spesso viene restituito un errore 404 quando le pagine sono state spostate o eliminate. Nel primo caso, è meglio utilizzare la mappatura di URL o il reindirizzamento di URL restituendo una risposta 301 Moved Permanently, che può essere configurata nella maggior parte dei file di configurazione del server, o tramite la riscrittura dell'URL; nel secondo caso deve essere restituito un 410 Gone. Poiché queste due opzioni richiedono una configurazione del server speciale, la maggior parte dei siti Web non le utilizza.
Gli errori 404 non devono essere confusi con gli errori DNS, che compaiono quando l'URL fornito fa riferimento a un nome di server che non esiste. Un errore 404 indica che il server stesso è stato trovato, ma che il server non è stato in grado di recuperare la pagina richiesta.

## Errori soft 404

Alcuni siti web segnalano un errore "non trovato" restituendo una pagina web standard con un codice di risposta "200 OK", segnalando erroneamente che la pagina è stata caricata correttamente; questo è noto come soft 404. Il termine "soft 404" è stato introdotto nel 2004 da Ziv Bar-Yossef et al.
I 404 soft sono problematici per i metodi automatizzati per scoprire se un collegamento è interrotto. Alcuni motori di ricerca, come Yahoo e Google, utilizzano processi automatizzati per rilevare i soft 404. Essi possono verificarsi a seguito di errori di configurazione quando si utilizza un determinato software del server HTTP, ad esempio con il software Apache HTTP Server, quando un documento di errore 404 (specificato in un file .htaccess) è specificato come percorso assoluto piuttosto che un percorso relativo (/error.html). Questo può anche essere fatto apposta per forzare alcuni browser (come il superato Internet Explorer) per visualizzare un messaggio di errore 404 personalizzato anziché sostituire ciò che viene fornito con un messaggio di errore "descrittivo" specifico del browser (in Internet Explorer, ora obsoleto, questo comportamento si attivava quando viene offerto un 404 e l'HTML ricevuto è più corto di una certa lunghezza e può essere disabilitato manualmente dall'utente).
Esistono anche errori "soft 3XX" in cui il contenuto viene restituito con uno stato 200 ma proviene da una pagina reindirizzata, ad esempio quando le pagine mancanti vengono reindirizzate alla home page/root del dominio.

### Server proxy

Alcuni server proxy generano un errore 404 quando un codice di errore di intervallo 500 sarebbe più corretto. Se il server proxy non è in grado di soddisfare una richiesta per una pagina a causa di un problema con l'host remoto (come errori di risoluzione del nome host o connessioni TCP rifiutate), questo dovrebbe essere descritto come un errore interno del server 5xx, ma potrebbe invece fornire un 404. Questo può confondere i programmi che si aspettano e agiscono su risposte specifiche, poiché non possono più distinguere facilmente tra un server web assente e una pagina web mancante su un server web presente.

### 404 intenzionali

Nel luglio 2004, il provider di telecomunicazioni britannico BT Group ha implementato il sistema di blocco dei contenuti Cleanfeed, che restituisce un errore 404 a qualsiasi richiesta di contenuto identificato come potenzialmente illegale dalla Internet Watch Foundation. Altri ISP restituiscono un errore HTTP 403 "vietato" nelle stesse circostanze. La pratica di utilizzare falsi errori 404 come mezzo per nascondere la censura è stata segnalata anche in Thailandia e Tunisia. In Tunisia, dove la censura era severa prima della rivoluzione del 2011, le persone si sono rese conto della natura dei falsi errori 404 e hanno creato un personaggio immaginario chiamato " Ammar 404 " che rappresenta "il censore invisibile".

## Codici di errore dello stato secondario di Microsoft Internet Server 404

Il software del server web sviluppato da Microsoft, Internet Information Services (IIS), restituisce una serie di codici di stato secondario con le sue 404 risposte. I codici di stato secondario assumono la forma di numeri decimali aggiunti al codice di stato 404. I codici di stato secondario non sono ufficialmente riconosciuti da IANA e non vengono restituiti da server non Microsoft.

### Codici di stato secondario

I server IIS 7.0, IIS 7.5 e IIS 8.0 di Microsoft definiscono i seguenti codici di stato secondario HTTP per indicare una causa più specifica di un errore 404:
* 404.0 - Non trovato.
* 404.1 - Sito non trovato.
* 404.2 - Restrizione ISAPI o CGI.
* 404.3 - Restrizione del tipo MIME.
* 404.4 - Nessun gestore configurato.
* 404.5 - Negato dalla richiesta di configurazione del filtro.
* 404.6 - Verbo negato.
* 404.7 - Estensione del file negata.
* 404.8 - Spazio dei nomi nascosto.
* 404.9 - Attributo del file nascosto.
* 404.10 - Intestazione della richiesta troppo lunga.
* 404.11 - La richiesta contiene una doppia sequenza di escape.
* 404.12 - La richiesta contiene caratteri a bit elevato.
* 404.13 - Lunghezza del contenuto troppo grande.
* 404.14 - URL richiesta troppo lungo.
* 404.15 - Stringa di query troppo lunga.
* 404.16 - Richiesta DAV inviata al gestore di file statici.
* 404.17 - Contenuto dinamico mappato al gestore di file statico tramite una mappatura MIME con caratteri jolly.
* 404.18 - Sequenza di stringhe di query negata.
* 404.19 - Negato dalla regola di filtraggio.
* 404.20 - Troppi segmenti URL.

## Pagine di errore personalizzate

I server Web possono in genere essere configurati per visualizzare una pagina di errore 404 personalizzata, inclusa una descrizione più naturale, il marchio del sito padre e talvolta una mappa del sito, un modulo di ricerca o un widget di 404 pagine.
La frase a livello di protocollo, che è nascosta all'utente, è raramente personalizzata. Internet Explorer, tuttavia, non visualizzava le pagine personalizzate a meno che non siano più grandi di 512 byte, scegliendo invece di visualizzare una pagina di errore "semplice". Un altro problema è che se la pagina non fornisce una favicon ed esiste una pagina 404 personalizzata separata, traffico aggiuntivo e tempi di caricamento più lunghi verranno generati su ogni visualizzazione di pagina.
Molte organizzazioni utilizzano le pagine di errore 404 come un'opportunità per iniettare umorismo in quello che altrimenti potrebbe essere un sito Web serio. Ad esempio, Metro UK mostra un orso polare su uno skateboard e l'agenzia di sviluppo web Left Logic ha un semplice programma di disegno. Durante la campagna elettorale britannica del 2015, i principali partiti politici hanno utilizzato le loro 404 pagine per prendere di mira gli oppositori politici o mostrare le politiche pertinenti ai potenziali sostenitori.
Mentre molti siti Web inviano informazioni aggiuntive in un messaggio di errore 404, ad esempio un collegamento alla home page di un sito Web o una casella di ricerca, alcuni tentano anche di trovare la pagina Web corretta desiderata dall'utente. A tale scopo, sono disponibili estensioni per alcuni sistemi di gestione dei contenuti (CMS).

### Iniziative benefiche

NotFound.org (in collaborazione con Telefono Azzurro, Missing Children Europe, Famous e Amazon), raccogliendo le segnalazioni di bambini scomparsi nell'Unione Europea, ha lanciato un'iniziativa per la personalizzazione e l'uso a scopo solidale della pagina di errore 404. Installando un'applicazione, tramite l'integrazione di un iframe nella pagina errore 404, mostra un banner con la foto e la descrizione di un bambino scomparso.

## Monitoraggio degli errori 404

Esistono numerosi strumenti che scansionano un sito Web per trovare pagine che restituiscono codici di stato 404. Questi strumenti possono essere utili per trovare collegamenti che esistono all'interno di un particolare sito web. Il limite di questi strumenti è che trovano solo collegamenti all'interno di un particolare sito Web e ignorano i 404 derivanti da collegamenti su altri siti Web. Di conseguenza, questi strumenti perdono l'83% dei 404 sui siti web. Un modo per aggirare questo problema è trovare errori 404 analizzando i collegamenti esterni.
Uno dei modi più efficaci per scoprire gli errori 404 è utilizzare Google Search Console, Google Analytics o il software di scansione.
Un altro metodo comune è il monitoraggio del traffico verso 404 pagine utilizzando l'analisi dei file di registro. Questo può essere utile per capire di più su ciò che gli utenti 404s hanno raggiunto sul sito. Un altro metodo per monitorare il traffico verso le pagine 404 è l'utilizzo di strumenti di monitoraggio del traffico basati su JavaScript.