In my proudction rails app, I got all types of random attacks requesting for asp, zip and rar files. Rails rendered 404 page as expected, but my production log file is jammed wi
You could add a catch all route after all your other routes that would catch this stuff and render a controller/action of your choosing:
match '*' => 'errors#not_found'
You could even choose to only match .asp or whatever if you wanted:
match '*.:format' => 'errors#not_found', :constraints => {:format => /(asp|zip|rar)/i}
Rails 4 and 5 answer:
match '*any', to: 'not_found#anything', via: [:get, :post]
To match a wildcard parameter, it must have a name assigned to it - any
in this case.
class NotFoundController < ApplicationController
def anything
Logger.new('log/not_found.log').info(request.fullpath)
# To render nothing:
# head :not_found #Rails 5
# render nothing: true, status: :not_found # for Rails 4
#To render 404 page
render file: 'public/404.html', status: :not_found, layout: false
end
end