我已经创建了一个新的rails3项目,但我在我的服务器日志中多次看到以下日志。为什么我得到这些请求,我如何避免这些?
/apple-touch-icon- precomposer .png
2012-09-18 20:03:53 +0530
ActionController::RoutingError(没有路由匹配[GET])
“/ apple-touch-icon-precomposed.png”):
我没有在任何地方给出这个链接,也不想在任何地方渲染这个图像。我不知道为什么这个资源正在被尝试加载。
我终于解决了!!这是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
如何解决?:
添加图标解决问题。
另一种解决方案是简单地在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
如果你在这里结束谷歌,这是一个简单的配置,以防止这个错误充满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。