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'