erreurs 404 de mon site

Aujourd’hui, Google me notifie d’une hausse énorme des erreurs 404 (introuvable) sur mon site :


erreurs 404 de mon site

Google me signale ça au moyen de son outil Google Webmaster Tools, qui permet de garder un œil sur l’état du référencement, mais également qui pointe où, l’état du site (up/down), le nombre d’erreurs rencontrés, la vitesse d’exploration, le temps de chargement des pages. C’est un outil assez pratique, et on y trouve parfois des surprises.

Concernant tous les 404, on dirait que Google fait remonter toutes les erreurs, y compris anciennes, qu’il a en mémoire : quand je regarde les pages 404 et les pages qui pointent vers les fichiers 404, beaucoup sont des erreurs de la part de Google : les liens sont bien corrects, aucun soucis donc… Pas plus que d’habitude en fait.


Ceci est tout de même l’occasion de donner quelques astuces sur la maintenance d’un site web au fil du temps.


Astuce de base : une bonne URL ne change pas


Une bonne URL ne change pas. Quand vous créez une page, quelqu’un sera emmené à la partager sur un site ou un forum. À partir de ce moment là, il sera trop tard : si vous voulez modifier l’emplacement du fichier, le lien sur l’autre site ne fonctionnera plus.

Évidemment, ne pas changer de place des fichiers, ce n’est pas toujours possible : un site évolue, c’est normal.
Dans ce cas là, on peut s’en sortir avec une redirection, mais c’est seulement en dernier recourt.


Corriger avec .htaccess

f

Une page web, par exemple « http://lehollandaisvolant.net/tuto/index.php » est accessible depuis plusieurs adresses différentes :


Tôt ou tard, ce genre de liens finiront par se retrouver dans la nature, et dans certains cas, ça créera des problèmes, dont des erreurs 404. Pour ça, on peut utiliser la réécriture d’URL avec le fichier « .htaccess » qui se trouve à la racine de votre site.

Perso, j’utilise plusieurs formes de réécritures. Parmi toutes les URL ci-dessus, celle que je veux pour mon site et mes pages, c’est la plus courte :


Pas de « www », pas de multiples slashs, pas de « index.php » (ce dernier est implicitement utilisé par le serveur, mais ça dépend de votre configuration et le mieux est de tester sur votre site).

Voilà les codes à placer dans le fichier .htaccess (après chaque ajout, testez votre site : une erreur 500 indique une erreur dans le .htaccess, et il faudra annuler la dernière opération effectuée dans ce fichier).

Déjà, placez ceci tout en haut et s’il n’y est pas, pour activer la réécriture :

RewriteEngine on
RewriteBase /


Pour supprimer le « www. » :

RewriteCond %{HTTP_HOST} ^www.lehollandaisvolant.net [NC]
RewriteRule ^(.*)$ http://lehollandaisvolant.net/$1 [R=301,L]

Pour supprimer les « index.php » inutiles :

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

Pour supprimer les multiples slashs :

RewriteCond %{REQUEST_URI} ^(.*)//+(.*)$
RewriteRule . %1/%2 [R=301,L]

Pour supprimer le slash final sur un lien en « .php ».
Il faut savoir que sur Linux, Unix et d’autres, un dossier est un fichier, et l’ouvrir constitue une « exécution » du fichier. Son adresse se termine par un slash « / ».
Donc si au lieu de faire « dossier/fichier.php » vous mettez « dossier/fichier.php/ », l’ordinateur pensera que « fichier.php » est un dossier (avec les problèmes de liens relatifs/absolus que ça entraîne : ça fait un sous-niveau supplémentaire) et en exécutant le contenu du fichier quand même. Perso je préfère éviter cela, car ça peut donner des erreur 404.
Je supprime dont le slash final quand il suit un « .php ». Mais attention à ce qu’aucun dossier sur votre site comporte « .php » à la fin, sinon il sera inaccessible aussi.

RewriteCond %{REQUEST_URI} ^(.*)\.php/$
RewriteRule . %1.php [R=301,L]


Le fichier .htaccess permet de faire plein de choses, mais ne le rendez pas trop obèse parce que ce fichier est appelé à chaque requête sur votre site.


Le fichier robots.txt


Google m’indique toutes ces erreurs parce qu’il analyse mon site. Il est possible de lui bloquer l’accès à certaines pages. Du moins, les pages bloquées ne seront pas retournés dans les résultats de recherche : visiblement, Google les explore quand même (certains 404 ne sont issues que de pages bloquées).

Le fichier robots.txt est un fichier à la racine du site, et c’est là dedans qu’on va indiquer quels sont les dossiers et fichiers que les robots ne doivent pas indexer.

Pour interdire l’indexation du dossier « /dossier/ » à tous les robots, utilisez ça :

User-agent: *
Disallow: /dossier/

Vous pouvez mettre plusieurs dossiers, chacun sur une ligne !

User-agent: *
Disallow: /dossier1/
Disallow: /dossier2/

Vous pouvez aussi bloquer juste un moteur de recherche avec son nom :

User-agent: nsa
Disallow: /

Ce code à l’efficacité que je pense fortement douteuse va bloquer l’indexation de tout mon site par la NSA. Le nom des différents moteurs de recherche sont donnés ici : robots-txt.com/ressources.


Le fichier humans.txt


En plus du fichier robots.txt, une initiative a été lancée pour faire un fichier à destination des humains : le fichier « humans.txt ».
Il s’agit un peu d’une page « à propos » de votre site, qui s’affiche en texte simple et dans lequel vous pouvez mettre des infos sur le site, l’auteur…

Selon moi c’est un peu inutile, plutôt humoristique, mais ça peut être sympa si assez de monde le fait : ça ne coûte rien du tout, c’est totalement gratuit et ça ajoute comme les erreurs « 404 » personnalisées, une touche de finesse et de détails à votre site.

J’en ai un sur mon site aussi, je vous laisse le trouver à la racine du site.