Edited at

Railsのredirect_toの引数には_pathでなく_urlを使う


概要

RailsガイドやRailsのリファレンスにて、明言はされてないものの redirect_to の引数としては _path でなく _url が利用されています。

ですが、なぜ _path でなく _url を利用しているのか、これらのドキュメント内では充分な説明がなされてません(見逃してるかもですが)。

調べたところ、以下の記事で解説がされていました。

http://shin.hateblo.jp/entry/2013/01/13/124158


「RailsによるアジャイルWebアプリケーション開発 第4版のp.120、David曰く」で解説されてます。

HTTPの302リダイレクトの仕様上、絶対パスを使うのが妥当


ふむふむなるほど、ということで RFC を読もうとしましたが断念したため、RFCを解説している記事を探しました。

https://7io.org/2012/07/08/22:16:01/


HTTP1.1のLocationヘッダは、絶対URLでないとRFC違反


なるほどですね。


追記

コメントで補足いただきました

thx! @znz


実際はほとんどのブラウザーでサポートされていたので RFC 7231 で緩和されて相対 URL でも OK になっています。

https://en.wikipedia.org/wiki/HTTP_location