由于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 }