apple touch icon - ¿Por qué me aparece un error para apple-touch-icon-precomposed.png
favicon (11)
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 ni idea de por qué se está intentando cargar este recurso.
¡¡Finalmente lo resolví !! Es una característica de Web Clip en dispositivos Mac. Si un usuario desea agregar su sitio web en Dock o Desktop, solicita este ícono.
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.
¿Cómo resolver ?: Agregar un icono para resolver un problema.
Hay una joya como quiet_assets que silenciará estos errores en tus registros si, como yo, no quisieras tener que agregar estos archivos a tu aplicación Rails:
Lo mismo me está pasando a mí. 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 entre bastidores y el usuario nunca ve el error. Supongo que el dispositivo solicita el icono táctil específico para su resolución (que no está allí) hasta que se establezca de forma predeterminada el apple-touch-icon
general de apple-touch-icon
o apple-touch-icon-precomposed
, si está presente, o genera una pequeña Captura de pantalla de la página actual.
FWIW, ponga los íconos en el directorio / public.
Si no te importa que el ícono se vea bonito en todo tipo de dispositivos Apple, simplemente agrega
get ''/:apple_touch_icon'' => redirect(''/icon.png''), constraints: { apple_touch_icon: /apple-touch-icon(-/d+x/d+)?(-precomposed)?/.png/ }
a su archivo config/routes.rb
y algunos icon.png
a su directorio public
. Redirigir a 404.html
lugar de icon.png
también funciona.
Si terminó aquí con Google, esta es una configuración simple para evitar que este error llene 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 del servidor Nginx:
location =/apple-touch-icon-precomposed.png {
log_not_found off;
access_log off;
}
PD: es posible que desee agregar apple-touch-icon.png
y favicon.ico
también.
Simplemente cree archivos de tamaño cero llamados los nombres apropiados.
La solicitud se cumplirá sin transferencia de datos adicionales ni más líneas de registro.
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 de 100 x 100 png, 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 haber desaparecido.
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 mala configuración del tema móvil y el complemento, pero luego descubrí que los dispositivos de Apple realizan esas solicitudes si el propietario del dispositivo agrega el sitio.
Tenga en cuenta que esto puede suceder incluso cuando el usuario NO ha marcado el sitio en su pantalla de inicio de iOS; por ejemplo, cada vez que abre una página con Chrome para iOS, hace un GET "/apple-touch-icon-precomposed.png"
.
He manejado esta y otras solicitudes 404 no HTML 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 respuesta de format.all
se ocupa de imágenes como este archivo PNG (que no existe para mi sitio).
Trate de cambiar el enlace de
/apple-touch-icon-precomposed.png
a:
<%=asset_path "apple-touch-icon-precomposed.png" %>
Una solución alternativa es simplemente agregar una ruta a sus rutas.
Básicamente, captura la solicitud de Apple y devuelve un 404 al cliente. De esta manera sus archivos de registro no se desordenan.
# routes.rb at the near-end
match ''/:png'', via: :get, controller: ''application'', action: ''apple_touch_not_found'', png: /apple-touch-icon.*/.png/
luego agrega un método ''apple_touch_not_found'' a tu application_controller.rb
# application_controller.rb
def apple_touch_not_found
render plain: ''apple-touch icons not found'', status: 404
end
Si un usuario del navegador web Safari (dispositivos Apple) visita su sitio. El navegador intenta obtener el ícono del sitio si no está definido en <head>
en el siguiente orden:
- apple-touch-icon-57x57-precomposed.png
- apple-touch-icon-57x57.png
- apple-touch-icon-precomposed.png
- apple-touch-icon.png
Para resolver este problema, defina un ícono para navegadores web de safari o dispositivos Apple. Agrega algo como esto a la sección principal de tu sitio:
<link rel="apple-touch-icon" href="/custom_icon.png"/>
Si desea mantener <head>
limpio, cargue el icono en el directorio raíz de su sitio con el nombre correcto.
El tamaño de icono predeterminado es 57px .
Puede encontrar más detalles en la biblioteca de desarrolladores de iOS .