在rails中重定向到第三方网站

时间:2012-07-29 17:24:57

标签: ruby-on-rails ruby

我需要重定向到某些第三方网站。问题是,使用redirect_to url

,某些网址会重定向,而某些网址无法正常工作

示例1: http://example.com/click?a(9999999)p(9999999)prod(999999)ttid(999)url(http%3A%2F%2Fwww.someothersite.se%2Fd%2FBLah-Fooo%2FBar%2F_%2FA-3z324qaF1z140nu%3FNr%3D234234234

使用此网址,我只需:redirect_to url

示例2: http://click.example.com/c/9999/m/9999/t/a/9999/?url=http://www.someothersite.se/sv/foo/bar/baz-99/foo-bar-baz-9999?tm=999999

使用时:redirect_to url 我得到ERROR URI::InvalidURIError: bad URI(is not URI?)

所以,我试着做: redirect_to URI.encode(url) ......它有效!但是,示例1中的URL不再起作用。说找不到网站。但是Rails没有错误。

所以,我需要一种适用于所有(所有?)URI的方法。有什么想法吗?

使用Ruby 1.9.3和Rails 3.2.5

1 个答案:

答案 0 :(得分:0)

解决这个问题:

uri = URI.parse(the_url)
redirect_to uri.to_s
rescue URI::InvalidURIError => encoding
  redirect_to URI.encode(the_url)

目前为我的应用程序工作。