Il 404 predefinito è una pagina bianca con sopra il nome del server e la sua versione. Perde il visitatore e consegna a chiunque stia scandagliando il tuo sito un numero di versione preciso da cercare. La tua pagina, invece, tiene le persone sul sito e non dice ciò che non deve.

Nginx

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

location = /404.html { root /var/www/site/public; internal; }
location = /50x.html { root /var/www/site/public; internal; }

server_tokens off;

internal significa che la pagina è raggiungibile solo come errore, non digitandone l'indirizzo. server_tokens off toglie la versione da ogni risposta e da ogni pagina di errore.

Apache e LiteSpeed

ErrorDocument 404 /404.html
ErrorDocument 500 /50x.html
ServerSignature Off

Cosa dovrebbe contenere la pagina

  • Una frase chiara che dica cosa è successo, senza traccia di esecuzione.
  • Un collegamento alla pagina iniziale e alla ricerca.
  • La stessa intestazione e lo stesso piè di pagina del resto del sito, così da non sembrare un vicolo cieco.
  • Nulla che venga caricato da un percorso che potrebbe essere rotto anch'esso: se puoi, incorpora il CSS nella pagina.
Una pagina 404 deve restituire lo stato 404, non 200. Un 404 morbido — una pagina cortese con stato di successo — fa sembrare contenuto vero ogni indirizzo digitato male, e i motori di ricerca li indicizzeranno tutti.
curl -sSI https://yourdomain.com/no-such-page | head -1
# HTTP/2 404

La pagina 500 è un altro caso

Viene mostrata quando l'applicazione è rotta, quindi non deve dipendere dall'applicazione. Tienila come file statico che il server web possa servire da solo.