我们最近用闪亮的新 Ruby on Rails 站点替换了旧的 HTML 站点。不幸的是,许多搜索引擎仍在寻找不再存在的“index.htm”之类的页面。
我们已经有一个默认路由可以捕获错误的 URL 并给出 404,但是对于以 .htm 结尾的 URL,我更愿意使用 302 重定向到不同的页面。
这是我们目前使用的包罗万象:
match '*a', :to => 'errors#routing'
我可以在上面添加什么来捕获'index.htm'和其他任何*.htm?
我们最近用闪亮的新 Ruby on Rails 站点替换了旧的 HTML 站点。不幸的是,许多搜索引擎仍在寻找不再存在的“index.htm”之类的页面。
我们已经有一个默认路由可以捕获错误的 URL 并给出 404,但是对于以 .htm 结尾的 URL,我更愿意使用 302 重定向到不同的页面。
这是我们目前使用的包罗万象:
match '*a', :to => 'errors#routing'
我可以在上面添加什么来捕获'index.htm'和其他任何*.htm?
假设您有与旧路线相同的 Rails 路线(.html
最后没有),您应该能够:format
在您的路线中添加一个可选路线。查看默认捕获所有路由定义:
match ':controller(/:action(/:id))(.:format)'
关键(.:format)
在最后。尝试将其添加到其他路由,它应该适用于旧版和非旧版 URL。
采用match '*a.htm' => redirect("/", :status => 302)
我尝试了第一个解决方案,但没有取得多大成功。不过,这很好用。
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