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