Ruby on rails 使用301重定向的Rails错误页面-Chrome不';我打得不好

Ruby on rails 使用301重定向的Rails错误页面-Chrome不';我打得不好,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我将Rails环境配置为根据浏览站点时生成的错误代码生成动态错误页面 目前我通过一个页面处理404422和500个错误代码。问题是,当生成500错误时,Rails会自动应用301重定向。这是有问题的,因为错误页面不是永久性的,Chrome正在缓存它们。这会导致用户获得500页,即使在错误被修复之后也是如此 我已经尽我所能进行了谷歌搜索,但似乎没有人遇到过这个具体问题(注:我并不真的相信这一点) 以下是我的路线的配置方式: # routing error pages %w( 404 422 500

我将Rails环境配置为根据浏览站点时生成的错误代码生成动态错误页面

目前我通过一个页面处理404422和500个错误代码。问题是,当生成500错误时,Rails会自动应用301重定向。这是有问题的,因为错误页面不是永久性的,Chrome正在缓存它们。这会导致用户获得500页,即使在错误被修复之后也是如此

我已经尽我所能进行了谷歌搜索,但似乎没有人遇到过这个具体问题(注:我并不真的相信这一点)

以下是我的路线的配置方式:

# routing error pages
%w( 404 422 500 ).each do |code|
  get code, to: "errors#show", code: code
end
这是我的控制器代码(注意:为了简洁起见,省略了部分代码):

我有一个生成异常的页面来测试这个调用
oh_noes
,这是请求重定向:

Request URL:http://192.168.42.42:3000/en/oh_noes
Request Method:GET
Status Code:301 Moved Permanently
Remote Address:192.168.42.42:3000

提前感谢您提供的任何帮助。

因此我发现了问题所在。根据@slowjack2k的评论,我意识到rails在我的情况下是重定向的,而不是仅仅呈现错误页面而不是导致问题的页面。我查看了我的路由,发现错误路由在:locale范围内,因此它们被路由为:

/en/500
/en/404

Rails要求从根路径进行路由。所以我把它们移出了区域设置范围,现在它不再重定向了,它只是在请求页面的位置上呈现500。

所以我找出了哪里出了问题。根据@slowjack2k的评论,我意识到rails在我的情况下是重定向的,而不是仅仅呈现错误页面而不是导致问题的页面。我查看了我的路由,发现错误路由在:locale范围内,因此它们被路由为:

/en/500
/en/404

Rails要求从根路径进行路由。所以我把它们移出了区域设置范围,现在它不再重定向了,它只是呈现500来代替请求的页面。

我们有一个类似但有点不同的错误是,我们的500错误一直通过301永久重定向到500.html被缓存,结果是我们的重定向不正确

更改路线后。从

get '/500', to: redirect('/500.html')


我们有一个类似但有点不同的错误是,我们的500错误通过301永久重定向到500.html不断被缓存,结果是我们的重定向不正确

更改路线后。从

get '/500', to: redirect('/500.html')


已经有关于这个的好博客帖子了,比如我已经读过了。就像我说的,我已经做了很多关于这个主题的搜索。所有这些都描述了如何设置它,我已经完成了。问题是301以及如何将其更改为302,以使其不被缓存。我无法重现您的错误。我确实遵循了博客文章中描述的步骤,当错误发生时,错误视图会立即呈现,没有任何重定向。请阅读文章,这不是错误。我需要的重定向是一个302,这是一个临时重定向,而不是一个301,这是永久的,并得到缓存。如果您查看开发控制台,它将向您显示重定向的类型。您需要确保保留控制台日志,以便在请求之间不会清除日志。查看生成错误的页面请求,您将看到它被重定向为301。我需要知道如何将其更改为302。我确实查看了firefox和日志文件中的网络流量。当此错误发生时,OCCoursRails直接呈现错误操作。例如,您调用
/foo/bar
bar
不存在Rails不会重定向到它直接呈现的404操作
ErrorsController#not#u found
不会重定向到
/404
。在我看来,这个重定向没有Rails的内部操作。你自己创建的。已经有关于这个的好博客帖子了,比如我已经读过了。就像我说的,我已经做了很多关于这个主题的搜索。所有这些都描述了如何设置它,我已经完成了。问题是301以及如何将其更改为302,以使其不被缓存。我无法重现您的错误。我确实遵循了博客文章中描述的步骤,当错误发生时,错误视图会立即呈现,没有任何重定向。请阅读文章,这不是错误。我需要的重定向是一个302,这是一个临时重定向,而不是一个301,这是永久的,并得到缓存。如果您查看开发控制台,它将向您显示重定向的类型。您需要确保保留控制台日志,以便在请求之间不会清除日志。查看生成错误的页面请求,您将看到它被重定向为301。我需要知道如何将其更改为302。我确实查看了firefox和日志文件中的网络流量。当此错误发生时,OCCoursRails直接呈现错误操作。例如,您调用
/foo/bar
bar
不存在Rails不会重定向到它直接呈现的404操作
ErrorsController#not#u found
不会重定向到
/404
。在我看来,这个重定向没有Rails的内部操作。你自己创造它。