【问题标题】:Redirecting a path to a new domain in Rails routes在 Rails 路由中将路径重定向到新域
【发布时间】:2014-04-27 18:22:22
【问题描述】:

我想将对一个站点目录中的一堆文件/文件夹的请求重定向到新站点上的目录(然后是相同的路径)。

在我的 Rails routes.rb 我有:

match '/uploads/*path', :to => redirect{|params, request| "http://othersite.com/uploads/#{params[:path]}"}

我从 this answer 那里得到的。

它几乎可以工作,除了这个 URL:

http://currentsite.com/uploads/some/directories/filename.pdf

重定向到:

http://othersite.com/uploads/some/directories/filename

我无法弄清楚为什么缺少文件扩展名。

(我还会在末尾添加 constraints: {:path => /[\w\-_\/]+(\.[a-z]+)?/} 之类的内容,以确保路径模糊有效,但我在尝试解决此问题时已将其关闭。)

【问题讨论】:

    标签: ruby-on-rails ruby redirect routing


    【解决方案1】:

    您想要包含请求格式:

    match '/uploads/*path', :to => redirect{|params, request| "http://othersite.com/uploads/#{params[:path]}#{ '.'+params[:format] if params[:format].present? }"}
    

    ...这是我们认为是文件扩展名的 URI 部分(即:在您的示例中为 .pdf)。

    不过,只使用完整的传入请求路径(通过 request.full_path,它具有 URI 路径和所有查询参数)可能更优雅:

    match '/uploads/*path', :to => redirect{|params, request| "http://othersite.com/uploads/#{ request.fullpath }" }
    

    【讨论】:

    • 很好,谢谢你,而且回复很快! (8 分钟后我可以将其标记为正确,但我稍后会这样做。)
    • 干杯!我添加了一个更简单的解决方案,它也可能效果更好。
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多