2010-11-17 8 views
2

すべてのIEユーザーを特定のページにリダイレクトして、私たちがIEをサポートしておらず、別のブラウザーを試す必要があることを伝えます。レール3つのルートを使用してこれを行うにはどうすればよいですか?そしてパブリックユーザーはサイトのパブリックエリアを見ることができますか?レール3にInternet Explorerのユーザーを特定のページにリダイレクトする方法はありますか?

私のルートは、私がuser_agentを照合する機能が存在しているはず

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'ページに移動します。何か案は?

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 
+1

IEで実際に動作させるのはどうですか?私はIE6以下をサポートしていないと理解できますが、やってきます...とにかく、ブラウザーの検出はIEの場合、部分文字列MSIEによって識別可能なユーザーエージェントで行われます。 –

+1

IEユーザーを拒否する+1それらをハングアップ!それらを火に置く! –

答えて

0

ここには2つの問題があるようです。

まず、すべてを照合するときにリダイレクトを呼び出します。だから、ユーザはaccount.myapp.com/を要求し、それが何かにマッチするので、account.myapp.com/ieにリダイレクトされますが、それも何となく一致してaccount.myapp.com/ieにリダイレクトされ、リダイレクトされます再び。それは無限ループになりますが、Railsが2番目の理由でそれにマッチしないため、おそらくこれは見えませんでした。

第2に、Railsでは名前を入力する必要があります。 "url"や好きなもの(パス、ページ、何でも)を使用できます。これは、Railsが要求されたパスをparams内のその名前に割り当てることができるように、パスが何であれparams [:url]を取得できるようにするためです。私はちょうど ""を使用することはできないと少し驚いていましたが、そうではありません。

は、これが私の作品:

constraints :user_agent => /Firefox/ do 
    match "*url", :to => "ie#index" 
end 

私はMac上でだとしてテストするためのIEを持っていないが、あなたはそこに簡単にサブIEすることができます。

関連する問題