例えば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を使った書き方に中々辿り着かなかくて諦めかけていたので参考になりました!