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

/apple-touch-icon- precomposer .png 2012-09-18 20:03:53 +0530 ActionController::RoutingError(没有路由匹配[GET]) “/ 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也可以。

其他回答

尝试改变链接从

/apple-touch-icon-precomposed.png 

to:

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

如果用户从Safari Web浏览器(Apple设备)访问您的站点。如果<head>中没有定义站点图标,浏览器将按以下顺序尝试获取该站点图标:

apple-touch-icon-57x57-precomposed.png apple-touch-icon-57x57.png apple-touch-icon-precomposed.png apple-touch-icon.png

要解决此问题,请为safari web浏览器或apple设备定义一个图标。在你网站的标题部分添加如下内容:

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

如果你想保持<head>干净,然后上传图标到根目录你的网站的正确名称。

默认图标大小为57px。

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

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

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

到您的配置/路由。Rb文件和一些icon.png文件到你的公共目录。重定向到404.html而不是icon.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月;马丁·布林克曼)

另一种解决方案是简单地在routes.rb中添加路由

它基本上捕获了Apple请求并将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