如果我的网站是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 => /.*/ }