Comme Apple aime faire comme personne, les machines de la marque cherchent à atteindre des images concues pour elles. Ce qui provoque des erreurs 404 avec la ressource que cela consomme et les logs qui se remplissent pour pas grand chose.
Voyons comment régler le problème avec une seule règle en .htaccess.
Plusieurs résolutions
Suivant si l'écran du visiteur est un iPhone, iPad, rétina ou non... c'est à dire suivant la taille et la résolution de l'écran le périphérique va aller chercher une image différente. Si l'image n'existe pas il va se rabattre sur une image moins adaptée, c'est à dire apple-touch-icon.png.
Si ça vous intéresse voici les explications d'Apple sur ce sujet.
La méthode longue
Utilisez un générateur d'icones qui va non seulement fournir les images à la bonne taille et avec le bon nom mais aussi le code (x)html qui va avec :
Personnellement je considère cette méthode lourde et abusive. Si l'on devait faire ça pour chaque fabricant bonjour l'angoisse.
La méthode radicale
Voici la méthode que je recommande. Générer une image au format 180x180 pixels et enregistrez-là à la racine de votre site sous le nom : apple-touch-icon.png.
Pourquoi 180 pixels ? parce qu'il s'agit de la résolution maximale demandée à par un iDevice actuellement.
Nous allons maintenant servir toutes les autres requêtes "apple" vers notre belle image. Les iDevices la redimensionneront à la volée si la taille ne leur convient pas.
Ajoutez dans votre fichier .htaccess :
<IfModule mod_rewrite.c> RewriteRule ^apple-touch-icon-(precomposed)?.*\.png apple-touch-icon.png [L] </IfModule>
Cela prend bien sûr en charge les images du style apple-touch-icon-precomposed.png.
Comme c'est une règle de réécriture rien ne montrera que c'est une redirection (contrairement à RedirectPermanent).
Voici une version plus fine afin d'éviter des matchs non souhaités :
<IfModule mod_rewrite.c> RewriteRule ^apple-touch-icon-(precomposed|[0-9]{2,4}x[0-9]{2,4})?\.png apple-touch-icon.png [L] </IfModule>
Conseil : testez votre regex avec regex101 (exemple).
Conclusion
Cela fait un moment que je devais l'appliquer sur BM, alors c'est chose faite. Chers utilisateurs de produits pommés vous devriez avoir une jolie icone 🙂
Simple et efficace.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
7 commentaires
Hello,
La méthode équivalente pour Nginx :
Enjoy 😉
@Seboss666: merci, par contre tu renvoies une erreur 404 ?
@Mr Xhark:
C'est un try_files, ça essaie les possibilités dans l'ordre des options, en l'occurrence y'en a qu'une réelle, si le fichier "passe-partout" est manquant, on retourne une 404 (particulièrement logique).
Chez moi, ça renvoie bien un 200 sans redirection (bon en fait j'ai fait le sagouin je renvoie la favicon 😀 ).
@Seboss666: merci pour la précision, je manipule peu nginx et j'ai toujours un peu de mal avec sa simplicité 🙂
Bonsoir à toutes et tous
Merci Mr Xhark
Testé & approuvé
C'est juste parfait
Très bien présenté (le problème et sa solution)
Propre, simple et efficace.
A vous suivre.
Netcordi@lement
Bonsoir. Je suis nouvelle dans le monde wordpress et je remarque que mon blog a ce souci. Je ne sais pas comment régler le problème surtout que je ne m'y connais pas trop en codes. Une astuce pour me guider? Merci d'avance.
Bien sincèrement: merci Mr Xhark !
Installé sur mon site et testé dans un 1er temps sur Ipad. Le fonctionnement est excellent.
Et comme vous le dîtes si bien : pas besoin d'une usine à gaz pour installer un simple marqueur, signet.
Cordialement.