2011-02-05 13 views
2

私は私のレールアプリとメインドメインにサブドメインをいくつか持っています。Ruby on Railsルーティングでは、サブドメイン/ドメインをどのように変更する必要がありますか

私はこのようなログインのルートを考えてみましょう:今、このルートは、例えば、すべてのドメインおよびサブドメインにアクセスすることができ

match "login", :controller => "user_sessions", :action => "new" 

porkjerkyicedcream.com/login 

と...

admin.porkjerkyicedcream.com/login 

私の質問はどのように私はサブドメインを削除(またはそれを追加)へのリダイレクトを強制するんです。だから誰かが/admin.porkjerkyicedcream.com/loginを訪問した場合、それらはメインドメインにリダイレクトされます(またはその逆)。

乾杯!

編集:

  1. 私は必ずしもルーティングでソリューションを必要としません。私はないと思う、私はそれは

答えて

7

コントローラでbefore_filterを使用し、適切にリダイレクトすることができます。たとえば:

 
class UserSessionsController < ApplicationController 
    before_filter :ensure_proper_subdomain, :only => "new" 

    def ensure_proper_subdomain 
    if request.host_with_port != 'admin.porkjerkyicedcream' 
     redirect_to params.merge({host: 'admin.porkjerkyicedcream'}) 
    end 
    end 
end 
+1

それは、複数の異なるドメインにデプロイできるように、それは、ドメインを指定せずに実行する必要があります。 – Smickie

+0

この問題を回避するには、提供された情報を使用して基本的にルールをコーディングする必要があります。アプリケーションがデプロイされているドメインまたはドメインのコレクションに応じて、設定ファイルを作成する必要があります。あなたはドメイン(request.host_with_port)を持っているので、その情報を使ってリダイレクト先を決定することができます。 configクラスを作成して設定とルーティングを処理することもできますが、自分でリダイレクトするタイミングを把握しておく必要があります。ここではその解決策では対応できません。 –

+0

元気ですか、私はこのアプローチに行き、いくつかの正規表現を使って正しいドメインを確認しました。 – Smickie

0

(異なるのdevのドメインのような)異なるドメインの多くの多くの場所、それを実行することができますので、アプリ自体に指定したドメイン名避けたい

  • これはルーティングファイルで行うことができます。しかし、いずれにせよ、常にを作成し、現在のドメイン/パスに従ってユーザーをリダイレクトすることができます。

  • 0

    私はあなたが追加した場合、あなたがapplication_controllerでこれを管理することができると思う:

    def default_url_options(options={}) 
        #add whatever logic you want 
        { :host => "example.com" } 
        end 
    
    +0

    ドメインを指定せずに行う必要があるため、複数の異なるドメインに展開できます。 – Smickie

    関連する問題