我在应用程序上遇到一些奇怪的错误,都与随机爬虫请求不存在的URL和Rails无法识别它有关。
即。 crawler请求[website] /local/favicon.ico并且下面的代码无法识别它应该呈现404,因为对象是nil,导致应用程序在第一次方法调用时中断:
@local = Local.find_by_slug(params[:c])
render_404(RuntimeError.new(request.path)) and return unless @local
我知道我可以阻止抓取工具IP,但它看起来不是最好的解决方案。
有没有人对如何使用Rails解决这个问题有任何想法?
答案 0 :(得分:0)
在请求字符串中使用句点,然后在params哈希中查找它们。句点表示格式,因此示例中的params [:c]可能只是favicon,而不是完整路径名。
我建议在救援区处理这个问题,因为这种特殊方法看起来很脆弱。
尝试类似:
begin
@local = Local.find_by_slug(params[:c])
rescue Exception => e
# Choose to do something with e here (email admin etc.)
render_404(RuntimeError.new(request.path)) and return
end