Le 404 par défaut est une page blanche portant un nom de serveur et une version. Il perd le visiteur, et il tend à quiconque scanne votre site un numéro de version précis à rechercher. Votre propre page garde les gens sur le site et ne dit rien qu'elle ne doive dire.
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 signifie que la page n'est atteignable qu'en tant qu'erreur, pas en tapant son adresse. server_tokens off retire la version de chaque réponse et de chaque page d'erreur.
Apache et LiteSpeed
ErrorDocument 404 /404.html
ErrorDocument 500 /50x.html
ServerSignature Off
Ce que la page doit contenir
- Une phrase claire disant ce qui s'est passé, sans trace d'exécution.
- Un lien vers l'accueil et vers la recherche.
- Les mêmes en-tête et pied de page que le reste du site, pour qu'elle ne fasse pas impasse.
- Rien qui soit chargé depuis un chemin lui-même peut-être cassé — intégrez le CSS si vous le pouvez.
Une page 404 doit renvoyer le statut 404, pas 200. Un 404 déguisé — une page avenante avec un statut de succès — fait passer chaque adresse mal tapée pour du vrai contenu, et les moteurs les indexeront toutes.
curl -sSI https://yourdomain.com/no-such-page | head -1
# HTTP/2 404
La page 500 est un autre cas
Elle s'affiche quand l'application est cassée : elle ne doit donc pas dépendre de l'application. Gardez-la sous forme de fichier statique que le serveur web peut servir seul.