2

サブドメインとカスタム ドメインからユーザーのページをルーティングしようとしています。たとえば、次の 3 つのドメインがあるとします。

app.com
user1.app.com
user1.com

訪問者は、アプリのドメインのサブドメイン (user1.app.com) とユーザーのカスタム ドメイン (user1.com) の両方でユーザーのページを表示できる必要があります。つまり、訪問者は、「app.com」のサブドメインまたは「app.com」ではないルート ドメインにアクセスすると、ユーザー ページにアクセスします。

そのためにルートを設定するにはどうすればよいですか?

おそらく、この疑似コードの行に沿った何か:

match "/", :to => "user_page#show", :constraints => { :subdomain => /.+/ OR :domain => NOT(app.com) }

どう思いますか?

4

1 に答える 1

7

制約ユーティリティ クラスまたはモジュールを使用します。

module DomainConstraint
  def self.matches? request
    request.subdomain.present? || request.domain != 'app.com'
  end
end

constraints DomainConstraint do
  # routing here
end

制約が 1 つのルートにのみ適用される場合は、次のことができます。

resources :foo, constraints: DomainConstraint

注 : ユーティリティ クラスは単純なラムダに置き換えることもできます(「動的リクエスト マッチング」を参照)。

于 2013-03-27T16:04:10.887 に答える