Rails:将所有未知路由redirect到root_url

每当用户点击错误的页面时,rails将显示公用文件夹中的404.html。 不过,我只想将浏览器redirect到根页面,而不显示任何内容。 所以我尝试了globbing,但没有成功,它仍然显示404页面。 以下是我的路线文件摘录:

# ... map.root :controller => 'home', :action => 'home' map.connect '*', :controller => 'home', :action => 'home' 

有什么build议么? 多谢你们!

如果您的项目由rails 3提供支持,则只需将此行添加到routes.rb

 match '*path' => redirect('/') 

编辑:Rails 4的支持

 match '*path' => redirect('/'), via: :get or get '*path' => redirect('/') 

就像Arkan的回答一样。 有一点,如果不希望这种行为在开发环境中,那么可以做 –

 match '*path' => redirect('/') unless Rails.env.development? 

导轨4-

routes.rb

你仍然可以使用一个简单的get来redirect所有未知的路由。

  get '*path', to: 'home#index' 

如果您希望提供路由到POST和GET请求,您仍然可以使用匹配,但Rails希望您通过via指定请求方法。

  match "*path" => "home#index", via: [:get, :post] 

请记住, routes.rb是按顺序执行的(匹配符合提供的path结构的第一个path),所以在通配符的底部添加通配符。

你需要创build一个控制器来做到这一点

 class RedirectsController def index redirect_to root_url end end 

并在你的路线

 map.connect '*', :controller => 'redirects', :action => 'index'