Ruby Routing Redirect导致URL解码和截断

时间:2014-02-06 23:17:04

标签: ruby-on-rails ruby rails-routing

我想重定向以下网址(以及许多,更多我喜欢的网页应用):

http://0.0.0.0:3000/images/q/big_background/1680x1008/quality/83/interlace/true/src/http%3A%2F%2F0.0.0.0%3A3000%2Fmedia%2FW1siZiIsIjIwMTQvMDIvMDYvdjFiZzFleXRkX3NsaWRlc2hvd19maWxsLmpwZyJdXQ%2Fslideshow_fill.jpg

这是我正在使用的路线:

match 'images/(*path)' => redirect { |params, request| "http://0.0.0.0:8080/#{params[:path]}" }

我希望上面的网址会被重定向到新的服务器(注意“src”之后的所有内容仍然是网址编码而且有一个.jpg):

http://0.0.0.0:8080/q/big_background/1680x1008/quality/83/interlace/true/src/http%3A%2F%2F0.0.0.0%3A3000%2Fmedia%2FW1siZiIsIjIwMTQvMDIvMDYvdjFiZzFleXRkX3NsaWRlc2hvd19maWxsLmpwZyJdXQ%2Fslideshow_fill.jpg

但是,现在它被发送为(注意src之后的所有内容都不再编码,并且.jpg已被截断):

http://0.0.0.0:8080/q/big_background/1680x1008/quality/83/interlace/true/src/http://0.0.0.0:3000/media/W1siZiIsIjIwMTQvMDIvMDYvdjFiZzFleXRkX3NsaWRlc2hvd19maWxsLmpwZyJdXQ/slideshow_fill

这在路由期间发生。但我不知道为什么路由会解码url和truncate。一段params [:path]显示它在那一点被截断,所以它必须是(*路径)但我不知道如何让重定向正常工作。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

Rails会自动在路由上执行一些转义任务,仅使用路由似乎无法实现......

如果你真的想这样做,请创建一个控制器,并使用request.original_url获取网址,然后重定向。

参考:stackoverflow - How do I get the current absolute URL in Ruby on Rails?