0

我们在旧服务器上安装了 Redmine,并将其移至具有新域的新服务器。问题是,我们需要将 url 从旧​​域重定向到新域。我对红宝石的了解真的不多。我在想在这个上重定向 URL 就像使用 .htaccess 重写一些规则一样简单,但我发现它不同。我在这里阅读了一些答案重定向,但无法弄清楚将这些代码放在哪里。

场景应该是这样的:

来自http://www.old-domain.com:3000/issues/3456

应重定向到http://www.new-domain.com:3000/issues/3456

谁能帮助我如何做到这一点?或者,如果您有更好的想法如何实现这一目标?我计划在此期间阅读一些红宝石指南。多谢你们!

更新:

我通过执行以下操作设法创建了一个简单的重定向:我创建了一个控制器 redirect_controller.rb:

class RedirectController < ApplicationController
  before_filter :show

  def show
     redirect_to "http://www.new-domain.com:3000/", :status => :moved_permanently, :notice => "Notice: A redirect!!!"
  end
end

并将其添加到 routes.rb:

map.connect '/', :controller => 'redirect'

但我只是在成功登录后才设法重定向页面。如何将所有页面重定向到保留参数的新页面,例如 /issues/3456(如果有)?

4

1 回答 1

1

您可以转到您的application.rb文件(我发现它比将重定向放在 中更好application controller),该文件已加载以启动所有导轨和所有引擎。这里的关键是使用

head :moved_permanently, :location => "http://www.newdomain.com/"

要调用它,您可以将其包装在我在博客中找到的方法中。我添加了一些评论

def perm_redirect_to(options)
   url = case options
         when String # if you pass a string url, which is your case
           options
         else
           url_for(options) # if you pass some more complex option hash in 
                            # `options`, which doesn't seem to be your case
         end
   head :moved_permanently, :location => url
end

您可以通过您的网址调用此方法perm_redirect_to(your_new_url)

于 2013-08-20T23:11:18.740 回答