404 Not Found: link rotti, soft 404 e quando usare 410
Un 404 Not Found significa che il server non ha una rappresentazione attuale per quell'URL, e non dice nulla su se la risorsa sia mai esistita o tornerà. Quell'ambiguità è il punto: un 404 può essere un link rotto che dovresti correggere, una pagina che hai rimosso di proposito, oppure una pagina che funziona perfettamente e finge soltanto di essere mancante.
Cosa ti dice e cosa non ti dice un 404
Secondo l'RFC 9110, un 404 significa che il server di origine non ha trovato una rappresentazione attuale per la risorsa richiesta, oppure non è disposto a rivelare che ne esiste una. Da questa formulazione derivano due dettagli.
Primo, un 404 è deliberatamente evasivo sulla permanenza. Non promette che l'URL resterà morto, motivo per cui i crawler continuano a riprovare gli URL 404 a lungo. Secondo, 404 è memorizzabile in cache per impostazione predefinita secondo l'RFC 9111, quindi un proxy di cache o una CDN può memorizzare l'errore e continuare a servirlo dopo che hai risolto il problema sottostante. Svuota sempre la cache dopo una correzione di un 404 e ritesta.
Un 404 è anche una risposta normale e sana. Ogni sito ne restituisce alcuni. Quelli che meritano il tuo tempo sono su URL che dovrebbero funzionare, o su URL che le persone stanno cercando di raggiungere.
Link rotto o rimozione genuina?
Questi due casi appaiono identici in un codice di stato e richiedono risposte opposte.
Un link rotto significa che il contenuto esiste ma l'URL è sbagliato. Le cause solite sono un errore di battitura in un link interno, uno slug modificato dopo la pubblicazione, una discrepanza di maiuscole/minuscole, una differenza nella barra finale, una migrazione del sito che ha cambiato lo schema degli URL, oppure un deployment che ha smesso di emettere un file. La soluzione è ripristinare l'URL o reindirizzarlo.
Una rimozione genuina significa che il contenuto è sparito e non tornerà: un'offerta di lavoro scaduta, un prodotto ritirato, una pagina account eliminata. Qui un 404 è onesto ma pigro, perché lascia i crawler a riprovare e i visitatori a mani vuote.
Modo pratico per distinguerli: esiste oggi una pagina equivalente da qualche parte sul sito? Se sì, reindirizza. Se no, decidi tra 404 e 410.
410 Gone, l'alternativa onesta
410 dice che la risorsa era disponibile ed è stata rimossa intenzionalmente, e ci si aspetta che la condizione sia permanente. Dove 404 significa "non trovato", 410 significa "eliminato di proposito, smetti di chiedere".
Usa 410 quando ritiri deliberatamente un contenuto e non hai un sostituto. È il segnale corretto per offerte scadute, pagine prodotto dismesse e contenuto rimosso per motivi legali o editoriali. I motori di ricerca in genere trattano 410 come un segnale di rimozione più forte e veloce rispetto a 404, anche se entrambi alla fine abbandonano l'URL. Come 404, anche 410 è memorizzabile in cache per impostazione predefinita.
Non usare 410 per nulla che potresti ripristinare, e non usarlo come gestore generico per URL sconosciuti. Se esiste una pagina sostitutiva adatta, un reindirizzamento è meglio di entrambi i codici, e la scelta del reindirizzamento conta: vedi 301 vs 302 per scegliere quello giusto.
Soft 404 e perché i monitor se li perdono
Un soft 404 è una pagina che restituisce 200 OK mentre il suo contenuto dice che la risorsa è mancante. Succede quando un'applicazione cattura la propria condizione di non-trovato e renderizza un template amichevole "pagina non trovata" senza impostare il codice di stato, oppure quando una rotta generica serve la homepage per ogni URL non corrisposto.
I motori di ricerca e i monitor di uptime leggono allora la stessa pagina in modi opposti. Google ispeziona il contenuto renderizzato, riconosce lo schema del contenuto mancante e lo classifica come soft 404 in Search Console, quindi l'URL non viene indicizzato ma il crawl budget viene comunque speso su di esso e il segnale si confonde. Un monitor che confronta i codici di stato vede 200 e segnala la pagina come sana, il che è come un'intera sezione può servire testo "non trovato" a ogni visitatore mentre la dashboard resta verde.
La soluzione sul sito è restituire un vero 404 con la pagina di errore, il che non costa nulla e soddisfa entrambi i lettori. La soluzione nel monitoraggio è fare un assert sul contenuto oltre che sullo stato: controlla che una frase nota dalla pagina reale sia presente, così una pagina che restituisce 200 con il corpo sbagliato fallisce comunque il controllo.
Come correggere i 404 nell'ordine giusto
- Conferma il codice reale, non la pagina visibile. Una schermata di errore amichevole non prova nulla:
Se questo stampa 200 per una pagina che dice "non trovato", hai un soft 404.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/missing-page - Trova quali URL vengono colpiti. I log di accesso del server e Search Console elencano entrambi gli URL 404 con il volume. Correggi per traffico, non alfabeticamente.
- Correggi prima i link interni. Un 404 raggiunto dalla tua stessa navigazione è interamente sotto il tuo controllo ed è la correzione di maggior valore.
- Reindirizza dove esiste un vero equivalente. Mappa il vecchio URL sulla pagina attuale più vicina, un URL alla volta. Evita di reindirizzare tutto alla homepage, che i motori di ricerca trattano anch'essi come un soft 404.
- Restituisci 410 per le rimozioni deliberate senza sostituto, così i crawler smettono di riprovare.
- Rendi utile la pagina 404. Ricerca, navigazione principale e link popolari recuperano visitatori che una pagina di errore nuda perde.
- Svuota le cache e ritesta. Poiché 404 è memorizzabile in cache, verifica l'URL corretto dall'esterno della tua rete, non solo dall'origine.
Controllare insieme il codice e il contenuto
Una modifica di slug, un aggiornamento di plugin o una modifica di routing rompe un insieme di URL mentre la homepage continua a caricarsi, quindi nulla avvisa e nessuno se ne accorge finché il traffico o le conversioni non calano. Un controllo HTTP pianificato sui tuoi URL importanti confronta sia il codice di stato sia il contenuto atteso della pagina, il che cattura sia un vero 404 sia un soft 404. Per la famiglia più ampia dei codici lato client, e per distinguere un vero errore del client da una configurazione errata del server, vedi la panoramica 4xx.