Pourquoi est-ce que j'obtiens une erreur pour apple-touch-icon-precomposed.png


247

J'ai créé un nouveau projet rails3 mais je vois plusieurs fois les journaux suivants dans les journaux de mon serveur. Pourquoi je reçois ces demandes et comment puis-je les éviter?

A commencé GET "/apple-touch-icon-precomposed.png" pour 192.168.6.2 le 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Aucune route ne correspond à [GET] "/apple-touch-icon-precomposed.png"):

Je n'ai donné ce lien nulle part et je ne veux pas rendre cette image nulle part. Je ne sais pas pourquoi cette ressource est en train d'être chargée.


4
je reçois la même chose exacte dans mon projet .net. n'a rien à voir avec le rubis. ce que je ne comprends pas, c'est pourquoi ce n'est pas une erreur standard 404 introuvable. mais ce n'est pas le cas. juste une erreur de routage. j'obtiens: Le contrôleur pour le chemin '/apple-touch-icon-precomposed.png' est introuvable ou n'implémente pas IController.
horace

Réponses:


221

Je suppose que les appareils Apple font ces demandes si le propriétaire de l'appareil y ajoute le site. C'est l'équivalent du favicon. Pour résoudre ce problème, ajoutez 2 fichiers png 100 × 100, enregistrez-les sous apple-touch-icon-precomposed.png et apple-touch-icon.png et téléchargez-les dans le répertoire racine du serveur. Après cela, l'erreur devrait disparaître.

J'ai remarqué beaucoup de demandes pour apple-touch-icon-precomposed.png et apple-touch-icon.png dans les journaux qui ont essayé de charger les images à partir du répertoire racine du site. J'ai d'abord pensé que c'était une mauvaise configuration du thème mobile et du plugin, mais j'ai découvert plus tard que les appareils Apple faisaient ces demandes si le propriétaire de l'appareil y ajoutait le site.

Source: Pourquoi les webmasters devraient analyser leur journal des erreurs 404 (mars 2012; par Martin Brinkmann)


52
J'ai trouvé un bel article qui détaille tout ce que je voulais savoir (et plus): mathiasbynens.be/notes/touch-icons
Alexis

Avec le répertoire racine, vous voulez dire le répertoire app / public ou le répertoire public?
Bengala

Je pense que l'auteur ci-dessus signifie le répertoire racine du document Web configuré, par exemple dans Apache 2.4, il est généralement / var / www / htdocs
Hgehlhausen

70

Si un utilisateur du navigateur Web Safari (appareils Apple) visite votre site. Le navigateur essaie de récupérer l'icône du site si elle n'est pas définie <head>dans l'ordre suivant:

  1. apple-touch-icon-57x57-precomposed.png
  2. apple-touch-icon-57x57.png
  3. apple-touch-icon-precomposed.png
  4. apple-touch-icon.png

Pour résoudre ce problème, définissez une icône pour les navigateurs Web Safari ou les appareils Apple. Ajoutez quelque chose comme ça à la section tête de votre site:

<link rel="apple-touch-icon" href="https://stackoverflow.com/custom_icon.png"/>

Si vous voulez rester <head>propre, téléchargez l'icône dans le répertoire racine de votre site avec le nom approprié.

La taille d'icône par défaut est 57 pixels .

Vous pouvez trouver plus de détails sur la bibliothèque des développeurs iOS .


Même avec cette définition, j'obtiens toujours 404 pour apple-touch-icon-precomposed.png
Chris Haines

3
Il est maintenant recommandé que la taille d'icône par défaut soit 152 × 152 pixels afin de s'adapter aux nouveaux iPads.
Andrew Lott

2
J'obtiens toujours la même erreur, ainsi qu'une erreur de routage supplémentaire pour custom_icon.png. Soit dit en passant, je reçois ces erreurs en cours d'exécution en développement sur OSX 10.10.2 en utilisant Safari 8.0.3 comme navigateur.
7stud

8

Si vous avez terminé ici la recherche sur Google, il s'agit d'une configuration simple pour empêcher cette erreur de saturer les journaux du serveur Web:

Apache virtualhost

Redirect 404 /apple-touch-icon-precomposed.png
<Location /apple-touch-icon-precomposed.png>
    ErrorDocument 404 "apple-touch-icon-precomposed does not exist"
</Location>

Bloc serveur Nginx:

location =/apple-touch-icon-precomposed.png {
        log_not_found off;
        access_log off;
}

PS: Est-il possible que vous vouliez ajouter apple-touch-icon.pnget favicon.icoaussi.


5

Notez que cela peut se produire même lorsque l'utilisateur n'a PAS mis le site en signet sur son écran d'accueil iOS - par exemple, chaque fois que vous ouvrez une page à l'aide de Chrome pour iOS, il le fait GET "/apple-touch-icon-precomposed.png".

J'ai traité cela et d'autres demandes non HTML 404 dans mon ApplicationController comme suit:

respond_to do |format|
  format.html { render :template => "error_404", :layout => "errors", :status => 404 }
  format.all { render :nothing => true, :status => 404 }
end

La format.allréponse prend en charge des images telles que ce fichier PNG (qui n'existe pas pour mon site).


4

Il y a un joyau comme quiet_assets qui fera taire ces erreurs dans vos journaux si, comme moi, vous ne vouliez pas avoir à ajouter ces fichiers à votre application Rails:

https://github.com/davidcelis/quiet_safari


C'est la meilleure solution ... rien que des frustrations et d'énormes fichiers journaux si vous n'empêchez pas la journalisation. Les tailles demandées changent quand Apple décide ... de continuer à nous poursuivre avec plus de versions du même favicon.
vanboom

4

Si vous ne vous souciez pas que l'icône soit jolie sur toutes sortes d'appareils Apple, ajoutez simplement

get '/:apple_touch_icon' => redirect('/icon.png'), constraints: { apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/ }

à votre config/routes.rbfichier et certains icon.pngà votre publicrépertoire. Redirection vers 404.htmlau lieu de icon.pngtravaux aussi.


A bien fonctionné ici.
Wellington1993

3

J'ai finalement résolu !! Il s'agit d'une fonctionnalité Web Clip sur les appareils Mac. Si un utilisateur souhaite ajouter votre site Web dans Dock o Desktop, il demande cette icône.

You may want users to be able to add your web application 
or webpage link to the Home screen. These links, represented 
by an icon, are called Web Clips. Follow these simple steps 
to specify an icon to represent your web application or webpage
on iOS.

plus d'informations: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

comment résoudre?: Ajoutez une icône pour résoudre le problème.


2

Une autre solution consiste à simplement ajouter un itinéraire à vos itinéraires.rb

Il intercepte essentiellement la demande Apple et rend un 404 au client. De cette façon, vos fichiers journaux ne sont pas encombrés.

# routes.rb at the near-end
match '/:png', via: :get, controller: 'application', action: 'apple_touch_not_found', png: /apple-touch-icon.*\.png/

puis ajoutez une méthode 'apple_touch_not_found' à votre application_controller.rb

# application_controller.rb
def apple_touch_not_found
  render  plain: 'apple-touch icons not found', status: 404
end

0

La même chose se produit pour moi. Et oui, comme l'a dit @Joao Leme, il semble que cela soit lié à la mise en signet d'un site par un utilisateur sur l'écran d'accueil de son appareil.

Cependant, j'ai remarqué que même s'il y a une erreur dans le journal, cela se produit dans les coulisses et l'utilisateur ne voit jamais l'erreur. Je suppose que l'appareil fait une demande pour l'icône tactile spécifique à sa résolution (qui n'est pas là) jusqu'à ce qu'il passe par défaut au général apple-touch-iconou apple-touch-icon-precomposed, s'il est présent, ou bien génère une petite capture d'écran de la page actuelle.

FWIW, placez les icônes dans le répertoire / public.


1
L'ajout d'images ne résout pas le problème. Des demandes sont faites pour des actifs qui n'existent pas. Chaque fois que cette demande se produit, le serveur répond et une entrée de journal est écrite. Ce n'est pas efficace.
Tass du

-1

Créez simplement des fichiers de taille nulle appelés les noms appropriés.

La demande sera satisfaite sans transfert de données supplémentaires ni autres lignes d'enregistrement.


1
Réponse très ancienne, mais la diffusion d'un fichier de taille nulle n'est pas du tout recommandée car le Web Clip (lien que les utilisateurs peuvent créer sur leur écran d'accueil) apparaîtra dans un carré sans contenu. Bien que je n'aime pas les anti-modèles compliqués créés par Apple, il serait préférable d'empiler les erreurs dans un fichier journal que d'offrir une expérience shxt aux utilisateurs, le cas échéant.
Andrea Moro

-4

Essayez de changer le lien de

/apple-touch-icon-precomposed.png 

à:

<%=asset_path "apple-touch-icon-precomposed.png" %>

Je n'ai donné ce lien nulle part et je ne veux pas rendre cette image nulle part. Je ne sais pas pourquoi cette ressource est en train d'être chargée.
Akash Agrawal

Essayez de trouver apple-touch-icon-precomposeddans votre répertoire de projet. Je pense que ce lien est inclus dans le modèle de mise en page, mais je ne le suis pas.
Jju

1
Il s'agit d'une image standard demandée par iOS; il n'est lié à aucun lien dans les fichiers de projet d'une personne.
Brad Koch

1
Cette image est également demandée par mon droïde razr, donc je ne suis pas sûr qu'elle soit native uniquement sur les appareils iOS.
Tass

2
Pourquoi Apple ne peut-il pas se contenter de favicon.ico comme tout le monde?
Tony Payne
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.