为什么rails应用程序在某些情况下会返回406而不是404?

时间:2012-10-15 06:29:02

标签: ruby-on-rails ruby-on-rails-3 error-handling

我有一个巨大的Rails应用程序正在运行退出,但我有一个谷歌的问题,因为该应用程序的一些讨厌的行为。当我打电话

http://railsapp.com/index.html

哪个不存在该应用程序返回404错误,这是正确的。但是当我打电话时

http://railsapp.com/index.htm

它返回406错误,这不是很好。每次请求具有.htm扩展名的现有文件时,都会出现此问题。如何让我的rails应用程序返回404而不是406?

2 个答案:

答案 0 :(得分:1)

试试这个

 respond_to do |format|    
   format.html {}
   format.js {}        
  end

因为在你的“#{RAILS_ROOT} / public / ..”406.htm文件不是他们的,所以它给出了错误,404.html文件在公共文件夹中可用,以便它被调用。

在你的{RAILS_ROOT} / public中这些文件是他们的

1. 404.html
2. 422.html
3. 500.html

如果你使用这些文件,那么它会调用else,它会给出错误,就像文件不存在一样。

你也可以这样做在ApplicationController中定义一个类似的方法:

def render_404
  render :file => "#{RAILS_ROOT}/public/404.html",  :status => 404
end

答案 1 :(得分:1)

406.htm文件在您的公用文件夹中不可用,因此您将获得错误 - 现有文件。根据您的布局在公共文件夹中添加406.html文件,然后尝试。