Modpagespeed ou l’ennemi potentiel de Google Images
22 Nov 2012
écrit parModPageSpeed est un module du serveur Apache développé par les équipes de Google dans le but est d'accélérer votre site, via un nombre assez impressionnant de filtres et fonctions dont la compression d'images à la volée.
Je compte faire un article détaillé à ce sujet prochainement sur ses fonctionnalités et son intérêt inutilité mais je n'ai pas résisté à l'envie de partager avec vous ce que je viens de remarquer: Modpagespeed tire une balle dans les pieds de Googlebot-Image quand vous le désactivez!
Googlebot-Image, tiens des 404?
En analysant les logs de mon serveur, j'ai constaté un grand nombre d'erreurs 404 sur les images. Étrangement, cela concerne essentiellement des images recompressé par ModPageSpeed.
Quand le module ModpageSpeed compresse les images à la volée via le filtre rewrite_images, il les renomment dans son cache avec des noms de cette forme:
/logo-seocampus-300x121.jpg
devient
/xlogo-seocampus-300x121.jpg.pagespeed.ic.B_VSrmdWjb.jpg
Ensuite, Googlebot-Image passe avec ses copains Yandex, Bing et autres Baidu: ces super crawlers indexent donc vos images avec les URL du type monimage.jpg.bla.bla.chocolat.jpg.
C'est un hash unique qui est utilisé donc si le cache est régénéré, on retrouvera les mêmes noms d'images.
Par contre, le jour où vous décidez de désactiver le module ModPageSpeed à cause de sa surconsommation de ressources CPU/Memory (thème d'un futur article), bonjour les erreurs 404!
La solution: rewriterule
La solution que j'ai trouvé afin d ene pas générer d'erreurs 404 dans le cas ou vous désactiveriez ce module après l'avoir utilisé quelques temps est une règle de réécriture à rajouter dans la configuration d'Apache.
Elle n'est pas parfaite mais elle permettra au moins aux robots qui crawlent les images de ne pas perdre leur temps avec des erreurs 404:
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$ [NC] RewriteRule ^(.*)?/x?(.*)\.(gif|jpg|jpeg|png)\.pagespeed.*$ $1/$2.$3 [L,R=301]
écrit dans Serveurs web - Apache Varnish par |