我们最近用一个闪亮的新Ruby on Rails替换了一个旧的HTML网站。不幸的是,许多搜索引擎仍然在寻找类似于< index.htm'不再存在。
我们已经有一个默认路由可以捕获错误的网址并提供404,但对于以.htm结尾的网址,我更倾向于重定向到不同的网页而不是302.
这是我们目前使用的全能产品:
match '*a', :to => 'errors#routing'
我可以在上面添加什么来捕获&index; index.htm'还有别的什么* .htm?
答案 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