在参数中具有完整URL的Rails通配符路由

时间:2019-06-17 14:00:05

标签: ruby-on-rails

我想重定向到任何给定的URL。我正在尝试:

路线:

get 'track/*redirect_url', to: 'tracker#track'

控制器:

redirect_to params[:redirect_url]

但是,当我访问跟踪器网址时-我收到奇怪的重定向:

http://localhost:3000/http://google.com/search=xyz => http:/google.com/search=xyz(缺少一个斜线!)

http://localhost:3000/http://google.com => http:/google(斜杠+ .com缺失”

Rails显然以某种方式转换了URL部分,但是由于我对此没有控制权-我需要一种方法来对其进行修复。

任何想法如何?

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为Rails试图将其解析为单个URL并由于转义而失败(//被解析为“转义的/”)。

.com也会发生什么-由rails解析为格式(例如.html或.json)。

我建议您使用URL编码和查询字符串参数,例如:

http://localhost:3000/track/?redirect_url=https%3A%2F%2Fgoogle.com