LoginSignup
6
5

More than 5 years have passed since last update.

routes.rb内だけで不正なURLを正しいURLに直してリダイレクトさせる

Last updated at Posted at 2016-10-07

例えばhttps://hogehoge.com/animal/10/みたいなURLがあったときに、https://hogehoge.com/animal/00010/みたいなidの先頭に0が混じったURL(不正なURL)でもアクセスできてしまっててGoogleの検索エンジンに登録されてしまってGoogle Search Console上で重複コンテンツ扱いになってしまったというケースがあったとします。

この不正なURLを正しいURLにリダイレクトさせて解決しようとしたときに、コントローラーでパラメータチェックして不正(00010)だったら正しいURLにredirect_toみたいな処理を想像していたけど、routes.rb内だけで完結できるか探してみたらありました。

routes.rb
get 'animals/:animal_id' => 'animal#detail', as: 'animal_detail', animal_id: /[1-9][0-9]*/
get 'animals/:animal_id' => redirect { |params| "animals/#{params[:animal_id].to_i}" }, status: 301

参考:初心者じゃなくても役に立つかもしれないRailsのroutingの記述方をまとめてみた
調べてもこのparamsを使った書き方に中々辿り着かなかくて諦めかけていたので参考になりました!

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5