Read more

Rails: Default HTTP status codes when redirecting

Henning Koch
May 12, 2022Software engineer at makandra GmbH

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

From controllers

Illustration UI/UX Design

UI/UX Design by makandra brand

We make sure that your target audience has the best possible experience with your digital product. You get:

  • Design tailored to your audience
  • Proven processes customized to your needs
  • An expert team of experienced designers
Read more Show archive.org snapshot

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.

Posted by Henning Koch to makandra dev (2022-05-12 09:34)