Rails将无效路由重定向到root

如果我的网站是www.foo.com如果用户输入www.foo.com/blahblahblah它会说/blahblahblah是一条无效的路径(显然)。 但我希望它改为重定向到root_path,以便控制器可以处理URL – 应该呈现页面www.foo.com我想拉文本blahblahblah并用它做一些事情。 我该怎么做呢?

有几种可能性。 这是一个。 您可以将其添加到routes.rb的底部

 match ':not_found' => 'my_controller#index', :constraints => { :not_found => /.*/ } 

这将建立一个catch-all路由,使MyController的索引操作处理任何缺少的路径; 它可以通过查看params[:not_found]并做任何想要的事情来检测它们,例如重定向到root_path( redirect_to root_url ),根据坏路径战略性地重定向到某个地方,渲染一些特殊的东西,检查引用者/引用者的线索来源等

:constraints选项是必要的; 否则not_found参数将无法包含斜杠和点等特殊字符。

把它放在路线的底部,因为显然它会匹配所有东西,并且你想让你的其他路线首先在路径上破解。

如果你只想重定向,仅此而已,你可以这样做(再次,在底部 ):

 match ':not_found' => redirect('/'), :constraints => { :not_found => /.*/ } 

在rails 4中获取’* path’=> redirect(’/’)