Thème > Développement
> > > Un problème de la page d'erreur 404 personnalisée avec ErrorDocument dans le htaccess

Un problème de la page d'erreur 404 personnalisée avec ErrorDocument dans le htaccess

Voila un petit problème que j'ai eu avec la personnalisation de l'erreur 404.
Sur mes sites, j'ai habitude de faire une page 404 en php qui affiche que la ressource demandée n'existe pas.
Pour cela, j'ai déclaré dans mon ficher .htaccess.
Exemple de code :
ErrorDocument 404 http://www.aliasdmc.com/ma-page-d-erreurs.php
Toutes les erreurs 404 vont maintenant sur ma-page-d-erreurs.php.

Par curiosité, j'ai voulu savoir quelles urls demandées généraient des erreurs 404.

Dans cette page 400, j'ai utilisé la variable PHP $_SERVEUR afin de récupérer 'REQUEST_URI' qui correspond à l'url qui a été fournie.
Et là!, déception!. $_SERVEUR['REQUEST_URI'] me renvoie toujours 'ma-page-d-erreurs.php'.

Pour une raison qui m'est inconnue, j'ai décrété que ErrorDocument 404 ne fonctionnait pas.
Après plusieurs tests, j'ai trouvé comment faire une redirection en réécriture d'url vers une page d'erreur.
Exemple de code :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ ma-page-d-erreurs.php [NC,L]


Mais en fait la solution était toute simple, je l'avais sous le nez sur les milliers d'exemples qu'il y a sur le net.
Il ne fallait pas mettre le nom de domaine devant.
Exemple de code :
ErrorDocument 404 /ma-page-d-erreurs.php


Il est très important d'utiliser cette écriture car dans les autres cas, on a un statut de page qui est égal 200 donc pas d'erreur, donc pour les robots il n'y a pas de problème.
Alors qu'avec la dernière solution, on a un statut de page qui est égal 404, donc pour les robots, la page n'a lieu d'être indexée, elle sera donc éventuellement supprimée de leurs bases.

Conclusion : apprendre à lire les exemples, fait gagner du temps.