/old?a=3
を /new?a=3
にするような場合です。
get '/old' => redirect('/new')
だと、/old?a=3
が /new
になってしまいます。
これを解決するには、キーワード引数形式で redirect
メソッドを呼びます。
get '/old' => redirect(path: '/new')
なお、レスポンスコードは、デフォルトで 301 になります。
サンプル
/tokyo/food?a=3 を /food?a=3 にするような場合です。
area_path = Regexp.union(Area.pluck(:name))
category_path = Regexp.union(Category.pluck(:name))
get(':area/:category' => redirect(path: '/%{category}'),
area: area_path, category: category_path)