如果我的网站是www.foo.com
如果用户输入www.foo.com/blahblahblah
它会说/blahblahblah
是一个无效的路径(显然)。但我希望它重定向到 root_path,以便控制器可以处理 URL——页面www.foo.com
应该渲染我想拉文本blahblahblah
并用它做一些事情。我该怎么做呢?
有几种可能性。这是一个。您可以将其添加到bottom你的路线.rb:
match ':not_found' => 'my_controller#index',
:constraints => { :not_found => /.*/ }
这将建立一个包罗万象的路由,使 MyController 的索引操作处理任何丢失的路径;它可以通过查看来检测它们params[:not_found]
并做任何它想做的事,例如重定向到 root_path (redirect_to root_url
),根据错误路径策略性地重定向某个地方,渲染一些特殊的东西,检查引用者/引用者以获取有关来源的线索等。
The :constraints
选项是必要的;否则not_found
param 不能包含特殊字符,例如斜杠和点。
将其放在路线的底部,因为显然,它将匹配所有内容,并且您希望让其他路线首先破解该路径。
如果您只想重定向,仅此而已,您可以这样做(同样,在bottom):
match ':not_found' => redirect('/'), :constraints => { :not_found => /.*/ }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)