0

我们最近用闪亮的新 Ruby on Rails 站点替换了旧的 HTML 站点。不幸的是,许多搜索引擎仍在寻找不再存在的“index.htm”之类的页面。

我们已经有一个默认路由可以捕获错误的 URL 并给出 404,但是对于以 .htm 结尾的 URL,我更愿意使用 302 重定向到不同的页面。

这是我们目前使用的包罗万象:

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

我可以在上面添加什么来捕获'index.htm'和其他任何*.htm?

4

3 回答 3

1

假设您有与旧路线相同的 Rails 路线(.html最后没有),您应该能够:format在您的路线中添加一个可选路线。查看默认捕获所有路由定义:

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

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

于 2013-03-20T14:27:34.797 回答
1

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

于 2013-03-21T09:50:05.513 回答
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
于 2013-03-20T20:00:24.087 回答