Internet explorer Rails3中有没有一种方法可以将任何InternetExplorer用户重定向到特定页面?

Internet explorer Rails3中有没有一种方法可以将任何InternetExplorer用户重定向到特定页面?,internet-explorer,ruby-on-rails-3,redirect,routes,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 => 'inte

我想将所有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
我知道有能力匹配
用户代理
,但我无法让它将所有试图访问网站内部部分(account.myapp.com)的ie用户重定向到
'/ie'
页面。有什么想法吗

MyApp::Application.routes.draw do
  constraints(NoSubdomain) do
    root :to => 'public#index'
  end

  constraints :user_agent => /MSIE/ do
    match "*" => redirect('/ie')
  end

  constraints(Subdomain) do
    root :to => 'internal#index'
  end
end

这里似乎有两个问题

首先,匹配所有内容时调用重定向。因此,用户请求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分到其中。

这里似乎有两个问题

首先,匹配所有内容时调用重定向。因此,用户请求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分到其中。

让IE真正发挥作用怎么样?我可以理解不支持IE6及以下版本,但来吧。。。无论如何,浏览器检测是通过用户代理完成的,在IE的情况下,它可由子字符串MSIE识别。+1用于拒绝IE用户!!吊死他们!!放火烧了他们!!在IE中实际工作怎么样?我可以理解不支持IE6及以下版本,但来吧。。。无论如何,浏览器检测是通过用户代理完成的,在IE的情况下,它可由子字符串MSIE识别。+1用于拒绝IE用户!!吊死他们!!放火烧了他们!!