为什么我会收到了苹果触摸图标precomposed.png错误(Why am I getting e

2019-06-18 05:24发布

我创建了一个新的Rails3中的项目,但我看到在我的服务器日志以下日志多次。 为什么我收到这些要求,我怎样才能避免这些?

入门掌握“/apple-touch-icon-precomposed.png”为192.168.6.2,在2012年9月18日20时03分53秒0530

ActionController的:: RoutingError(无路由匹配[GET] “/apple-touch-icon-precomposed.png”):

我没有给这个链接的任何地方,不想在任何地方呈现此图像。 我无言以对为什么这种资源正在试图加载。

Answer 1:

我想苹果设备使这些请求,如果设备所有者添加网站到它。 这是图标的等价物。 要解决问题,增加2 100×100个的PNG文件,将其保存为苹果触摸图标precomposed.png和苹果触摸的icon.png并将其上传到服务器的根目录。 在此之后,错误应该消失。

我注意到许多在试图从网站的根目录加载图像日志以苹果触摸图标precomposed.png和苹果触摸的icon.png请求。 我开始还以为是手机主题和插件的配置错误,但后来发现,苹果的设备使这些请求,如果设备所有者添加网站到它。

来源: 为什么网络管理者应该分析自己的404错误日志 (2012年3月,由马丁·布林克曼)



Answer 2:

如果从Safari浏览器(苹果设备)的用户访问您的网站。 该浏览器尝试如果在没有定义抓取网站图标<head>按照以下顺序:

  1. 苹果触摸图标-57x57-precomposed.png
  2. 苹果触摸图标57x57.png
  3. 苹果触摸图标precomposed.png
  4. 苹果触摸的icon.png

要解决此问题,要么定义Safari网页浏览器或苹果设备的图标。 添加像这样到你的网站的头部分:

<link rel="apple-touch-icon" href="/custom_icon.png"/>

如果你想保留<head>干净然后上传图标根网站的目录与适当的名称。

默认图标大小为57px。

你可以找到更多的细节iOS开发者库 。



Answer 3:

请注意,这可能发生,即使用户没有书签的网站,他们的iOS主屏幕上-例如,任何时候你打开使用iOS版Chrome的页面时,它确实GET "/apple-touch-icon-precomposed.png"

我在我的ApplicationController如下处理这个问题和其他非HTML 404个请求:

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

format.all响应负责图像的像这样的PNG文件(不我的网站存在)。



Answer 4:

如果你在这里结束google搜索,这是一个简单的配置,以防止这种错误完全在Web服务器日志:

Apache的虚拟主机

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

Nginx的服务器块:

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

PS:可能是您要添加apple-touch-icon.pngfavicon.ico了。



Answer 5:

还有像宝石quiet_assets ,将在日志中沉默这些错误如果像我一样,你不希望有这些文件添加到您的Rails应用程序:

https://github.com/davidcelis/quiet_safari



Answer 6:

我终于解决了! 这是在Mac设备上的Web Clip功能。 如果用户想增加你的网站在码头Ø桌面它请求该图标。

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.

更多信息: https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

如何解决?:添加一个图标来解决问题。



Answer 7:

如果你不关心在所有类型的苹果设备的漂漂亮亮的图标,只需添加

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

config/routes.rb文件和一些icon.png到您的public目录。 重定向到404.html代替icon.png工作过。



Answer 8:

另一种解决方案是简单的路由添加到您的routes.rb

它基本上抓住了苹果的请求,并呈现一个404返回给客户端。 这样,你的日志文件不混乱。

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

然后添加一个方法“apple_touch_not_found”你application_controller.rb

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


Answer 9:

同样的事情也发生了我。 是的,正如@Joao的Leme说,现在看来,这是关系到用户书签网站到他们的设备的主屏幕。

不过,我注意到,即使有错误日志中,它的幕后发生的事情,并且用户不会看到错误。 我假定该装置使得用于特定触摸图标其第一个请求(这是不存在的),直到默认为一般apple-touch-iconapple-touch-icon-precomposed ,如果存在的话,否则产生一个小当前页面截图。

FWIW,把图标在/ public目录。



Answer 10:

只需创建零大小的文件名为适当的名称。

该请求将被满足,没有额外的数据传输,也没有进一步记录线。



Answer 11:

尝试从改变链接

/apple-touch-icon-precomposed.png 

至:

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


文章来源: Why am I getting error for apple-touch-icon-precomposed.png