301重定向旧的php路径到新的Rails


301 Redirect old php-paths to new Rails

我正在把一个旧的php网站改造成RubyOnRails(3.0.3)。现有的网站(用php编写)已经上线几年了,现在获得了很多链接,在谷歌中定位良好。

现在,由于我在同一域中的Rails中发布它,我希望旧文件被301重定向到新版本中的相应文件。最好的办法是什么?

情况如下:

  • 我正在同一域名上建立新网站,我正在取代php版本
  • 文件的重命名没有逻辑关系。例如,www.domain.com/cat/home/page/helloworld.php可能在www.domain.com/stuff/hello-world-in-rails有相应的位置,一些文件已被删除等。
  • 因此,我想在表或类似的地方指定,其中一列是旧路径,另一列是新路径。当有人试图访问www.domain.com/cat/home/page/helloworld.php时,他们将301:d到www.domain.com/stuff/hello-world-in-rails

当我把php-sites放入Wordpress时,我通过在每个php文件中添加指向新路径的重定向代码(在Wordpress中)来解决这个问题。因为我的rails安装不支持php文件,所以这是不可能的。

我假设mod_rewrite是我选择的武器,但我应该怎么做呢?

你可以在路由文件中管理所有的重定向。这里的路由文档,特别是重定向方法会让你感兴趣!

http://guides.rubyonrails.org/routing.html重定向

我建议用Rack处理这个任务,应该是快速的,并把负载从你的rails应用程序。

有一个rubygem for rack叫做'redirect'

它允许你使用一个简单的数组来检测和重定向某些url。例如

redirect  ['/catch_url', '/redirect_url'],
          ['/catch_url2', '/redirect_url2']

注意:repo已经有一段时间没有更新了,所以不确定它是否还在工作,即使不是,里面没有太多的代码,如果需要的话,你可以很容易地滚动你自己的调整版本。