我想将请求重定向到另一个网址。
目标网址具有以下路线:
get 'conversion_tracker/:website_url', controller: 'conversion_trackers',
action: 'show', website_url: /.*/, defaults: {format: :json}
注意格式。它接受网站网址作为参数。即foo.com。这会导致重定向中的问题,因为路由不再知道它应该将foo.com
视为单个参数。我猜它会将com
作为单个参数进行检查。
这是我现在的重定向代码:
get 'conversion_tracker/:website_url', to: redirect {|params, req|
"/api/extern/conversion_tracker/%{website_url}?access_token=#{params[:access_token]}"}
然后我收到此错误:
bad URI(is not URI?): /api/extern/conversion_tracker/%{website_url}.html?access_token=
如果我在浏览器中查看我的网址,重定向网址是正确的:
http://localhost:3000/api/conversion_tracker/foo.com?access_token=b97b7064c4e41f226027c6cd715569d9
这似乎是格式问题。
谢谢!
答案 0 :(得分:1)
我在尝试重定向图片时遇到了类似的问题,尝试这样的事情......
get 'conversion_tracker/:website_url.:website_dom',
constraints: { website_url: /.+/, website_dom: /(com|net|org)/ },
to: redirect {|params, req| "/api/extern/conversion_tracker/%{website_url}.%{website_dom}?access_token=#{params[:access_token]}"}