2016-10-05 2 views
1

サイトをブラウズ中に生成されたエラーコードに基づいて動的エラーページを生成するようにRails環境を設定しました。Railsエラーページを使用して301リダイレクト - クロムがうまく再生されない

現在、404、422、500のエラーコードを1ページで処理しています。問題は、500エラーが生成されると、Railsは自動的に301リダイレクトを適用するということです。これは、エラーページが永続的なものではなく、Chromeがそれらをキャッシュしているため問題になります。これにより、エラーが修正された後でも、ユーザーは500ページを取得します。

私は可能なすべてのGoogle検索を行っていますが、誰もこの特定の問題を抱えていないようです(注:私は実際にそれを信じていません)。

# routing error pages 
%w(404 422 500).each do |code| 
    get code, to: "errors#show", code: code 
end 

をそして、ここに私のコントローラのコードです:ここで

は私のルートが設定されている方法です(注:簡潔にするため省略個):

if status_code == '404' 
    Rails.logger.warn "Invalid endpoint request: #{request.original_fullpath}" 
elsif status_code == '500' 

    Rails.logger.warn "The 500 page was rendered. Please check the logs prior to this message for stack trace and reporting." 

    ... 

end 

respond_to do |format| 
    format.html { render status_code.to_s, status: status_code } 
    format.json { render json: status_code.to_s, status: status_code } 
end 

私はこれをテストするための例外を生成ページを持っていますcalle 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 

ありがとうあなたが提供できるあらゆる助けのために事前に。

+0

これについては既に良いブログ記事があります。例えば、https://mattbrictson.com/dynamic-rails-error-pages – slowjack2k

+0

私は既にそれを読んでいます。私が言ったように、私はその話題について多くの検索をしました。それらのすべてに、私がすでに行っているセットアップ方法が記載されています。問題は301であり、キャッシュされないように302に変更する方法です。 – Jocko

+0

エラーを再現できません。私はブログの投稿に記載されている手順に従いました。エラーが発生した場合、エラー表示は即座に表示されます。 – slowjack2k

答えて

0

私は何が間違っていたかを理解しました。 @ slowjack2kのコメントに基づいて、私の状況では、問題の原因となったページの代わりにエラーページをレンダリングするだけで、レールがリダイレクトされていることに気付きました。私は私のルートを見て、エラールートが内部にいたことに気づい:ロケール範囲なので、彼らは次のようにルーティングされました:

/en/500 
/en/404 

Railsは、彼らがルートパスからルーティングすることが要求されています。だから私はロケールの範囲から外しました、そして今はそれはもはやリダイレクトしていません、それは単に要求されたページの代わりに500をレンダリングしています。

関連する問題