Module Gallery : éviter les 404 inutiles -
bess - 13/01/2011
J'ai très récemment eu l'occasion de faire le point sur les logs d'erreur d'Apache pour mon serveur qui, je rappel pour les néophytes, n'est ni plus ni moins qu'une liste d'erreur qu'a pu rencontrer l'un de mes sites.
404 not found, 401 autorisation refusée, tout y était.
J'ai donc commencé à corriger de très / trop nombreuses erreurs, des liens brisés, des inclusions de fichier js et css qui se faisaient très mal, ...
Je passe ainsi de +300 erreurs référencées toutes les deux heures à +300 erreurs référencées toutes les 20 heures (m'auto-applaudit par ce que sinon personne va le faire)
et là je tombe sur un os.
plus de 75% des erreurs restantes sont des 404 not found issue d'une série de gallerie photo sous le module Gallery de CmsMadeSimple, plus précisément dans sa gestion des miniatures.
En effet le module Gallery à tendance à renommer les miniatures, non pas selon le nom ou le hash du nom de l'image source, mais de façon incrémentielle ce qui fout la merde dès qu'il vous prend l'envie de rafraichir les miniatures car leur nom changera automatiquement et laissera derrière elles une multitude de lien KO dans le cache de google, dans le cache des navigateurs, ... et je ne parles pas des personnes ayant potentiellement linkée ces miniatures à l'extérieur de votre site pour en faire leur avatar, l'inclure dans une signature, ...
bref c'était la merde, et ca l'était encore plus lorsque l'on a tenté de mettre à jour les galeries en regroupant des galeries par année et non plus sous un seul répertoire.
Du coup j'ai cherché une solution viable pour ne plus afficher de 404 dans mes logs d'erreurs tout en indiquant à ceux/celles qui tombe sur un lien brisé vers une image que celle ci à disparue.
un code retour 301 : déplacé définitivement est renvoyé pour éviter de conserver un cache google erroné
la solution nécessite l'activation de la réécriture par Apache avec son fameux mod rewrite.
créer un fichier _404.jpg qui sera l'image renvoyée pour tout affichage d'une image innexistante.
créer un .htaccess et y écrire ceci.
Code :
Options +FollowSymLinks
RewriteEngine on
RewriteBase /uploads/images
# Redirige tous 404 de type image vers l'image dédiée
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule \.(gif|jpe?g|png|bmp)$ _404.jpg [R=301,NC,L]
# Redirige toutes les autres 404 vers la page d'index
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule $ index.html [R=301,L]
Tout déposer : .htaccess + image de la 404 dans le répertoire /uploads/images de votre installation.
Si vous souhaitez le mettre autre part, pensez à modifier la 3ème ligne en conséquence.
Dès que c'est déposé, toutes les images inexistantes afficheront votre image _404.jpg et ne pollueront plus votre log d'erreur (puisqu'au final ce ne sont pas des erreurs en tant que telle). Pensez à créer un index.html vide dans le même répertoire si celui ci n'existe pas encore.
Exemple : www point alpha-team point fr/uploads/images/blabla/56254636.jpG
Module Gallery : éviter les 404 inutiles -
bess - 13/01/2011
Plop : corrigé, maintenant ca renverra même un code 301 pour google.
curieusement ce n'est pas possible de renvoyé un code 404 :/
enfin c'est déjà ca de fait