2015-09-17 27 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

相關問題