Rails将无效路由重定向到root

时间:2011-07-01 13:57:04

标签: ruby ruby-on-rails-3 redirect

如果我的网站为www.foo.com,如果用户输入www.foo.com/blahblahblah,则会说/blahblahblah是无效路径(显然)。但我希望它改为重定向到root_path,以便控制器可以处理URL - 应该呈现页面www.foo.com我想要提取文本blahblahblah并对其执行某些操作。我该怎么做?

2 个答案:

答案 0 :(得分:8)

有几种可能性。这是一个。您可以将其添加到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 => /.*/ }

答案 1 :(得分:5)

在铁轨4中   得到' *路径' =>重定向(' /&#39)