如何将丢失的* .htm页面重定向到Rails中的已知页面?

时间:2013-03-20 14:23:41

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

我们最近用一个闪亮的新Ruby on Rails替换了一个旧的HTML网站。不幸的是,许多搜索引擎仍然在寻找类似于< index.htm'不再存在。

我们已经有一个默认路由可以捕获错误的网址并提供404,但对于以.htm结尾的网址,我更倾向于重定向到不同的网页而不是302.

这是我们目前使用的全能产品:

match '*a', :to => 'errors#routing'

我可以在上面添加什么来捕获&index; index.htm'还有别的什么* .htm?

3 个答案:

答案 0 :(得分:1)

假设您的Rails路由与旧路由相同(最后没有.html),您应该能够在路由中添加可选的:format。查看defalt catch所有路径定义:

match ':controller(/:action(/:id))(.:format)'

最后一个关键是(.:format)。尝试将其添加到其他路由,它应该适用于旧版和非旧版URL。

答案 1 :(得分:1)

使用match '*a.htm' => redirect("/", :status => 302)

答案 2 :(得分:0)

我尝试了第一个解决方案但没有取得多大成功。虽然这很好。

match '*a.htm', to: 'errors#redirect_to_home'

错误控制器在哪里:

# -*- encoding : utf-8 -*-
class ErrorsController < ApplicationController
  def routing
    render_404
  end

  def redirect_to_home
    redirect_to root_url
  end
end