我已经创建了一个新的rails3项目,但我在我的服务器日志中多次看到以下日志。为什么我得到这些请求,我如何避免这些?

/apple-touch-icon- precomposer .png 2012-09-18 20:03:53 +0530 ActionController::RoutingError(没有路由匹配[GET]) “/ apple-touch-icon-precomposed.png”):

我没有在任何地方给出这个链接,也不想在任何地方渲染这个图像。我不知道为什么这个资源正在被尝试加载。


当前回答

我猜如果设备所有者将站点添加到苹果设备上,苹果设备就会发出这些请求。这相当于favicon。解决方法:添加2个100×100 png文件,分别保存为apple-touch-icon- precomposd .png和apple-touch-icon.png,上传到服务器根目录。在那之后,错误应该消失了。

我注意到在日志中有很多试图从站点根目录加载图像的apple-touch-icon- precomposen .png和apple-touch-icon.png请求。我一开始以为这是手机主题和插件的错误配置,但后来发现,如果设备所有者将站点添加到苹果设备上,苹果设备就会发出这些请求。

来源:为什么网站管理员应该分析他们的404错误日志(2012年3月;马丁·布林克曼)

其他回答

我终于解决了!!这是Mac设备上的一个网页剪辑功能。如果一个用户想在Dock o Desktop中添加你的网站,它会请求这个图标。

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

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

注意,即使用户没有将网站书签到他们的iOS主屏幕上,也会发生这种情况——例如,任何时候你使用Chrome for iOS打开一个页面,它都会GET“/apple-touch-icon-precompose .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

的格式。所有响应照顾图像,如这个PNG文件(不存在的我的网站)。

如果你在这里结束谷歌,这是一个简单的配置,以防止这个错误充满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>

Nginx服务器块:

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

PS:你是否也想添加apple-touch-icon.png和favicon.ico。

尝试改变链接从

/apple-touch-icon-precomposed.png 

to:

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

如果你不在乎图标在各种苹果设备上是否好看,那就添加

获取'/:apple_touch_icon' =>重定向('/icon.png'),约束:{apple_touch_icon: /apple-touch-icon(-\d+x\d+)?(-precomposed)?\.png/}

到您的配置/路由。Rb文件和一些icon.png文件到你的公共目录。重定向到404.html而不是icon.png也可以。