0

我需要重定向到一些第 3 方网站。问题是某些 url 可以重定向,而有些则无法使用 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 )

使用此 URL,我只需: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

4

1 回答 1

1

像这样解决它:

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

到目前为止适用于我的应用程序。

于 2012-07-29T18:05:08.513 回答