我希望从他们的子域以及他们的自定义域中路由用户的页面。例如,考虑三个域:
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) }
您怎么看?
答案 0 :(得分:7)
使用a constraint utility class or module。
module DomainConstraint
def self.matches? request
request.subdomain.present? || request.domain != 'app.com'
end
end
constraints DomainConstraint do
# routing here
end
如果您的约束仅适用于一条路线,您可以这样做:
resources :foo, constraints: DomainConstraint
注意:您的实用工具类也可以替换为简单的lambda(请参阅“动态请求匹配”)