我已经创建了一个新的rails3项目,但我在我的服务器日志中多次看到以下日志。为什么我得到这些请求,我如何避免这些?
/apple-touch-icon- precomposer .png
2012-09-18 20:03:53 +0530
ActionController::RoutingError(没有路由匹配[GET])
“/ apple-touch-icon-precomposed.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文件(不存在的我的网站)。
另一种解决方案是简单地在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。