rails 3中是否有办法将任何Internet Explorer用户重定向到特定页面?

时间:2010-11-17 23:19:34

标签: internet-explorer ruby-on-rails-3 redirect routes

我想将所有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'

1 个答案:

答案 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下载到那里。