我想将所有IE用户重定向到一个特定页面,告诉他们我们不支持IE,他们应该尝试其他浏览器。如何使用rails 3路由执行此操作,并仍然允许公共用户查看站点的公共区域?
我的路线是这样的......
MyApp::Application.routes.draw do
constraints(NoSubdomain) do
root :to => 'public#index'
end
constraints(Subdomain) do
root :to => 'internal#index'
end
end
我知道有能力匹配user_agent
但是我无法让它重定向所有尝试转到网站内部的用户(account.myapp.com)到{ {1}}页面。有什么想法吗?
'/ie'
答案 0 :(得分:0)
这里似乎有两个问题。
首先,您在匹配所有内容时调用重定向。因此,用户请求account.myapp.com/并匹配任何内容,以便将它们重定向到account.myapp.com/ie,但这也匹配任何内容,因此它们会被重定向到account.myapp.com/ie并重定向再次。它变成了一个无限循环,但你可能没有看到这个,因为Rails因为第二件事而甚至不会匹配它。
其次,Rails要求你在那里放一个名字。你可以使用“ url”或任何你喜欢的东西(路径,页面,等等)。这样Rails就可以在params中为该名称分配所请求的路径 - 这样你就可以获得params [:url]的路径。我有点惊讶它不会让你只使用“”,但事实并非如此。
这对我有用:
constraints :user_agent => /Firefox/ do
match "*url", :to => "ie#index"
end
我在Mac上并且没有IE测试,但你可以很容易地将IE下载到那里。