¿Por qué recibo un error para apple-touch-icon-precomposed.png

247

He creado un nuevo proyecto rails3 pero veo los siguientes registros muchas veces en los registros de mi servidor. ¿Por qué recibo estas solicitudes y cómo puedo evitarlas?

Comenzó GET "/apple-touch-icon-precomposed.png" para 192.168.6.2 en 2012-09-18 20:03:53 +0530

ActionController :: RoutingError (Ninguna ruta coincide con [GET] "/apple-touch-icon-precomposed.png"):

No he dado este enlace en ninguna parte y no quiero renderizar esta imagen en ninguna parte. No tengo idea de por qué se está intentando cargar este recurso.

Akash Agrawal
fuente
44
Estoy obteniendo exactamente lo mismo en mi proyecto .net. No tiene nada que ver con el rubí. lo que no entiendo es por qué este no es un error estándar 404 no encontrado. Pero no lo es. Solo un error de enrutamiento. me sale: El controlador para la ruta '/apple-touch-icon-precomposed.png' no se encontró o no implementa IController.
horace

Respuestas:

221

Supongo que los dispositivos de Apple hacen esas solicitudes si el propietario del dispositivo le agrega el sitio. Este es el equivalente del favicon. Para resolverlo, agregue 2 archivos png 100 × 100, guárdelo como apple-touch-icon-precomposed.png y apple-touch-icon.png y cárguelo en el directorio raíz del servidor. Después de eso, el error debería desaparecer.

Noté muchas solicitudes de apple-touch-icon-precomposed.png y apple-touch-icon.png en los registros que intentaron cargar las imágenes desde el directorio raíz del sitio. Primero pensé que era una configuración incorrecta del tema y el complemento para dispositivos móviles, pero luego descubrí que los dispositivos de Apple hacen esas solicitudes si el propietario del dispositivo le agrega el sitio.

Fuente: Por qué los webmasters deberían analizar su registro de errores 404 (marzo de 2012; por Martin Brinkmann)

Joao Leme
fuente
52
Encontré un buen artículo que detalla todo lo que quería saber (y más): mathiasbynens.be/notes/touch-icons
Alexis
Con el directorio raíz te refieres a la aplicación / directorio público o directorio público?
Bengala
Creo que el autor anterior se refiere al directorio raíz de documentos web configurado, por ejemplo, en Apache 2.4 generalmente / var / www / htdocs
Hgehlhausen
70

Si un usuario del navegador web Safari (dispositivos Apple) visita su sitio. El navegador intenta buscar el icono del sitio si no está definido <head>en el siguiente orden:

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

Para resolver este problema, defina un icono para los navegadores web de safari o dispositivos Apple. Agregue algo como esto a la sección principal de su sitio:

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

Si desea mantenerse <head>limpio, cargue el icono en el directorio raíz de su sitio con el nombre adecuado.

El tamaño predeterminado del icono es 57px .

Puede encontrar más detalles sobre la biblioteca para desarrolladores de iOS .

Anand Kumar
fuente
Incluso con esta definición, sigo obteniendo 404s para apple-touch-icon-precomposed.png
Chris Haines
3
Ahora se recomienda que el tamaño de icono predeterminado sea 152 × 152 píxeles para acomodar los iPads más nuevos.
Andrew Lott
2
Todavía recibo el mismo error, así como un error de enrutamiento adicional para custom_icon.png. Por cierto, obtengo estos errores ejecutando rails en desarrollo en OSX 10.10.2 usando Safari 8.0.3 como navegador.
7stud
8

Si terminó aquí buscando en Google, esta es una configuración simple para evitar que este error esté lleno en los registros del servidor 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>

Bloque de servidor Nginx:

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

PD: es posible que quieras agregar apple-touch-icon.pngy favicon.icotambién.

Leopoldo Sanczyk
fuente
5

Tenga en cuenta que esto puede suceder incluso cuando el usuario NO haya marcado el sitio como favorito en su pantalla de inicio de iOS; por ejemplo, cada vez que abre una página con Chrome para iOS, lo hace GET "/apple-touch-icon-precomposed.png".

He manejado esta y otras solicitudes no HTML 404 en mi ApplicationController de la siguiente manera:

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

La format.allrespuesta se ocupa de imágenes como este archivo PNG (que no existe para mi sitio).

Tinynumbers
fuente
4

Hay una gema como quiet_assets que silenciará estos errores en sus registros si, como yo, no desea tener que agregar estos archivos a su aplicación Rails:

https://github.com/davidcelis/quiet_safari

davidcelis
fuente
Esta es la mejor solución ... nada más que frustraciones y enormes archivos de registro si no inhibes el registro. Los tamaños solicitados cambian cuando Apple decide ... manteniéndonos persiguiendo con más versiones del mismo maldito favicon.
vanboom
4

Si no le importa que el icono se vea bonito en todo tipo de dispositivos Apple, simplemente agregue

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

a su config/routes.rbarchivo y algunos icon.pnga su publicdirectorio. Redirigir a en 404.htmllugar de icon.pngfunciona también.

Edward Khachatryan
fuente
Funcionó bien aquí.
Wellington1993
3

Finalmente lo resolví !! Es una función de Web Clip en dispositivos Mac. Si un usuario desea agregar su sitio web en Dock o Desktop, solicita este icono.

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.

Más información: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

¿Cómo resolverlo ?: agregue un icono para resolver el problema.

molavec
fuente
2

Una solución alternativa es simplemente agregar una ruta a sus route.rb

Básicamente capta la solicitud de Apple y devuelve un 404 al cliente. De esta manera, sus archivos de registro no están abarrotados.

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

luego agregue un método 'apple_touch_not_found' a su application_controller.rb

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

Lo mismo me está pasando. Y sí, como dijo @Joao Leme, parece que está relacionado con un usuario que marca un sitio en la pantalla de inicio de su dispositivo.

Sin embargo, noté que a pesar de que hay un error en el registro, está sucediendo detrás de escena y el usuario nunca ve el error. Supongo que el dispositivo hace una solicitud para el ícono táctil específico para su resolución (que no está allí) hasta que el valor predeterminado sea general apple-touch-icono apple-touch-icon-precomposed, si está presente, o de lo contrario genera una pequeña captura de pantalla de la página actual.

FWIW, coloca los íconos en el directorio / public.

Brian
fuente
1
Agregar las imágenes no soluciona el problema. Se realizan solicitudes de activos que no existen. Cada vez que ocurre esta solicitud, el servidor responde y se escribe una entrada de registro. Eso no es eficiente.
Tass
-1

Simplemente cree archivos de tamaño cero llamados los nombres apropiados.

La solicitud se satisfará sin transferencia de datos adicionales ni líneas de registro adicionales.

Dave G
fuente
1
Respuesta muy antigua, pero no se recomienda servir un archivo de tamaño cero porque el Web Clip (enlace que los usuarios pueden crear en su pantalla de inicio) aparecerá como un cuadro cuadrado sin contenido. Aunque no me gustan los complicados antipatrones creados por Apple, sería mejor acumular errores en un archivo de registro que ofrecer una experiencia shxt a los usuarios, si los hubiera.
Andrea Moro
-4

Intenta cambiar el enlace de

/apple-touch-icon-precomposed.png 

a:

<%=asset_path "apple-touch-icon-precomposed.png" %>
Jju
fuente
No he dado este enlace en ninguna parte y no quiero renderizar esta imagen en ninguna parte. No tengo idea de por qué se está intentando cargar este recurso.
Akash Agrawal
Intenta encontrar apple-touch-icon-precomposeden tu directorio de proyectos. Creo que este enlace está incluido en la plantilla de diseño, pero no estoy seguro.
Jju
1
Esta es una imagen estándar solicitada por iOS; no está relacionado con ningún enlace en los archivos de proyecto de una persona.
Brad Koch
1
Mi droid razr también solicita esta imagen, por lo que no estoy seguro de que sea nativa solo de dispositivos iOS.
Tass
2
¿Por qué Apple no puede conformarse con favicon.ico como todos los demás?
Tony Payne