/ 404

Ruby On Rails处理404错误

背景:

网站改过一次版,url规则和以前完全不同,所以在日志中会看到很多404请求,默认情况下ROR会把页面重定向到public/404.html页面,但是我们需要收集下这些404页面的来源,所以要手动处理404错误。

实现:

思路比较简单,在route.rb的最后添加一个全局匹配,这样如果在前面没有匹配到正确的路由,就说明是一个404的页面,这时候就可以重定向到我们自定义的处理函数里了

match '*a' => 'errors#handle'

然后新增一个test_controller.rb文件,内容如下

class ErrorsController < ApplicationController def handle directory = "log/" filename = '404.log' path = File.join(directory, filename) f = open(path,"a") str = Time.now.strftime('%Y%m%d%H%M%S').to_s + " " + request.url.to_s + " " + request.remote_ip.to_s + " " + request.env['HTTP_REFERER'].to_s f.puts str f.close render :text => "OK" end end

这样每次有404产生,就会在log/404.log文件中记录下时间、访问的URL、访问者的IP还有来源页面

Ruby On Rails处理404错误
Share this