2

我有一个运行良好的大型 Rails 应用程序,但由于该应用程序的一些令人讨厌的行为,我遇到了谷歌的问题。当我打电话

http://railsapp.com/index.html

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

http://railsapp.com/index.htm

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

4

2 回答 2

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
于 2012-10-15T06:47:00.867 回答
1

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

于 2012-10-15T07:11:10.267 回答