我有一个简单的Rails应用程序作为正在经历过渡到新服务器的网站的初始页面运行。由于这是一个建立的网站,我看到用户请求打到Rails应用程序中不存在的页面。将所有页面查询重定向到Rails中的主页
如何将所有未知请求重定向到主页而不是抛出路由错误?
我有一个简单的Rails应用程序作为正在经历过渡到新服务器的网站的初始页面运行。由于这是一个建立的网站,我看到用户请求打到Rails应用程序中不存在的页面。将所有页面查询重定向到Rails中的主页
如何将所有未知请求重定向到主页而不是抛出路由错误?
我刚刚使用过的路线通配符来实现这一目标:
map.connect "/*other", :controller => "pages", :action => "index"
请注意,这条路应该是在routes.rb中结束,让所有其他路由才匹配。
您可以使用以下方法处理常见错误。将此代码放置在您的应用程序中ApplicationController
def rescue_404 @message = "Page not Found" render :template => "shared/error", :layout => "standard", :status => "404" end def rescue_action_in_public(exception) case exception when CustomNotFoundError, ::ActionController::UnknownAction then #render_with_layout "shared/error404", 404, "standard" render :template => "shared/error404", :layout => "standard", :status => "404" else @message = exception render :template => "shared/error", :layout => "standard", :status => "500" end end
修改它以满足您的需求,您也可以重定向。
HTH
如果只有几个人去的地方,这可能会更有用,但不幸的是,我无法预测人们来自的所有链接。尽管感谢您的帮助。您可能会发现这里发布的基于路线的解决方案也很有趣! – 2010-05-28 17:19:26
快速,完美,优雅地解决了我的问题。谢谢你的帮助! – 2010-05-28 17:05:13