В Rails, как ответить на нерелевантные не-http запросы? - PullRequest
0 голосов
/ 17 октября 2018

У меня относительно большой веб-сайт, и каждый день он ежедневно получает запросы, не относящиеся ко всем видам IP-адресов.Обычным является example.com/home.zip.

Поражает мой домашний контроллер, индекс действия {"controller"=>"home", "action"=>"index", "format"=>"zip"}.В настоящее время это вызывает ошибку 500:

Missing template home/index, application/index with {:locale=>[:en], :formats=>[:zip], :handlers=>[:erb, :builder, :arb]}

Я полагаю, что изящный способ справиться с этим - 404. Самое близкое решение, которое я нашел, это:

respond_to do |format|
  format.html
  format.any { redirect_to :foo }
end

За исключением redirect_to :foo я бы сделал render file: "#{Rails.root}/public/404.html", status: 404.Я на правильном пути?

1 Ответ

0 голосов
/ 17 октября 2018

Нет причин визуализировать 404 самостоятельно, для этого случая вы можете

 raise ActionController::RoutingError.new('Not Found')

, также вы можете сделать ограничения маршрутов немного более жесткими, чтобы такие запросы не попадали в контроллер.

...