由于url编码,URL重写失败

我最近在我的API项目上实现了版本控制。 现在我的api的URL必须以序列/v1/为前缀(正如我目前在v1上)

我不想打破旧的调用,所以为了确保透明的兼容性,我想重写旧的URL。

应将/events/9999/attendees等url重定向到/v1/events/9999/attendees

我使用以下代码将我的rails routes配置文件routes.rb设置为:

 match "*path", :to => redirect("/#{API_CONFIG['current_version']}/%{path}"), :constraints => lambda { |request| true } 

我现在面临的问题是,最终重写的路线似乎是url编码的……(或其他东西) 实际上,那 就是看似被破坏 %{path} 。 然后 :

/events/9999/attendees被重定向到/v1/events%2F9999%2Fattendees

我究竟做错了什么 ?

非常感谢

您可以传递一个块来redirect以指定正确的URL

 match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true }