ruby-on-rails – 如何允许客户子域网站使用自己的域

我有一个rails应用程序,客户注册并获得这样的自定义子域网站/网址:

> customer1.myapp.com
> customer2.myapp.com
> customer3.myapp.com

允许客户使用自己的注册域名以使其域名指向我的应用程序需要采取哪些步骤?

因此,在上面的示例中,如果“customer1”拥有“customer1.com” – 如何设置我的应用程序以便将对“customer1.com”的任何请求发送到“customer1.myapp.com”?另外,我的客户需要做什么呢?

谢谢.

解决方法

您的客户需要为其域名设置DNS,以便将其指向您的地址或将其中的一部分指向您的地址.这可能很难协调,特别是如果您托管服务的服务器的地址可能会不时更改.将客户的子域路由到子域更容易.

您还需要一个查找表,将客户的域映射到客户的帐户.这通常表示为:

before_filter :load_customer_from_host

def load_customer_from_host
  # Strip "www." from host name to search only by domain.
  hostname = request.host.sub(/^www\./,'')

  @customer = Customer.find_by_host!(hostname)
rescue ActiveRecord::RecordNotFound
  render(:partial => 'customer_not_found',:layout => 'application',:status => :not_found)
end

这假设您的客户模型的“主机”字段设置为“customer1.myapp.com”或“customer1.com”,与主机字段匹配.

设置应用程序时,您需要具有响应所有任意域名的虚拟主机配置.如果它是唯一托管的站点,这很容易做到,因为这是认行为.如果您在共享主机上执行此操作,则可能必须专门为每个客户域配置别名,这可能会造成麻烦.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...