Rails: Default HTTP status codes when redirecting

Updated . Posted . Visible to the public.

When redirecting you should take care to use the right HTTP status code.

From controllers

When redirecting from a controller Show archive.org snapshot , the default status code is 302 Found (aka Moved Temporarily):

redirect_to posts_url # HTTP 302 Moved Temporarily

To use a different code, pass a :status option:

redirect_to posts_url, status: 301

From routes

When redirecting from your config/routes.rb Show archive.org snapshot , the default status code is 301 Moved Permanently:

get '/stories', to: redirect('/articles') # HTTP 301 Moved Permanently

To use a different code, pass a :status option:

get '/stories', to: redirect('/articles', status: 302)

Note

By default Show archive.org snapshot Rails sends a header Cache-Control: max-age=0, private, must-revalidate with all responses, including redirects. That means if you accidentally use a permenent redirect, it is not cached in browsers.

Henning Koch
Last edit
Dominik Schöler
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2022-05-12 07:34)