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

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

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


当前回答

同样的事情也发生在我身上。是的,正如@Joao Leme所说,这似乎与用户将一个网站书签到他们的设备主屏幕有关。

但是,我注意到,尽管日志中有错误,但它是在幕后发生的,用户从未看到错误。我假设设备会根据它的分辨率请求特定的触摸图标(它并不存在),直到默认为通用的apple-touch-icon或apple-touch-icon-precomposed(如果存在),或者生成当前页面的一个小屏幕截图。

FWIW,把图标放在/public目录下。

其他回答

如果像我一样,你不想把这些文件添加到你的Rails应用程序中,有一个像quiet_assets这样的宝石可以在你的日志中沉默这些错误:

https://github.com/davidcelis/quiet_safari

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

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

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

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

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

注意,即使用户没有将网站书签到他们的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文件(不存在的我的网站)。

同样的事情也发生在我身上。是的,正如@Joao Leme所说,这似乎与用户将一个网站书签到他们的设备主屏幕有关。

但是,我注意到,尽管日志中有错误,但它是在幕后发生的,用户从未看到错误。我假设设备会根据它的分辨率请求特定的触摸图标(它并不存在),直到默认为通用的apple-touch-icon或apple-touch-icon-precomposed(如果存在),或者生成当前页面的一个小屏幕截图。

FWIW,把图标放在/public目录下。