2015-09-17 20 views
2

在我们的生产记录,我们得到了如下的错误时,一些IP(僵尸程序,可能)试图访问一个过时的资产:如何在Rails中处理弃用资产的路由?

ActionController::RoutingError (No route matches [GET] "/fonts/bootstrap/glyphicons-halflings-regular.svg")

这不是什么大不了的事对我们来说,但我m好奇什么是处理这个最好的方法。我觉得我们应该返回一个410 HTTP状态,而不是现在给出的404。此外,真的很想从日志中获得这30行长的错误消息。

在Rails中是否有最佳做法或惯例来处理这些弃用的资产路径?

回答

2

我认为最好由您的网络服务器完成,而不是Rails应用程序。

我不是指望Nginx的,但很可能需要添加像这样:

location ~* /fonts/bootstrap/ { 
    if (-f $request_filename) { 
    break; 
    } 

    return 410; 
} 

Nginx location doc将提供关于如何正确地做到这一点的详细信息。

+3

那么,最大的问题是没有必要在这个文件夹中的所有文件都没有了。 – BroiSatse

+1

您可以测试文件是否存在:'if(-f $ request_filename)'。如果不是,则发送错误。我已经更新了我的答案。 – dimakura

相关问题