【问题标题】:URL rewriting fails because of url encoding由于 url 编码,URL 重写失败
【发布时间】:2013-08-20 15:17:45
【问题描述】:

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

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

/events/9999/attendees 之类的网址应重定向到 /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

我做错了什么?

非常感谢

【问题讨论】:

  • url_encode(path)怎么样

标签: ruby-on-rails ruby ruby-on-rails-3.2


【解决方案1】:

您可以将块传递给redirect 以指定正确的网址

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

【讨论】:

    最近更新 更多