[Rails] How to do a 301 redirect
6 Nov
I had to dig a little for this. The answer is simply:
1 2 |
headers["Status"] = "301 Moved Permanently" redirect_to "/" |
Here is the relevant snippet from response.rb in ActionPack:
1 2 3 4 |
def redirect(to_url, permanently = false) @headers["Status"] = "302 Found" unless @headers["Status"] == "301 Moved Permanently" @headers["location"] = to_url ... |
So as you can see, it actively checks for that particular header. Kinda weird that it doesn’t have a :status flag like so many other methods, but that’s the way it is.

Thanks Lars! This post was definitely just a time saver for me!
So ActionPack seems a little broken here — what’s up with that permanently parameter that… doesn’t get used?
Yeah, seems it was lost in the shuffle when the redirect code was refactored.
Thanks for the hint. I was just about to start digging around. You saved me quite some time.