我有一个rails应用程序,客户注册并获得这样的自定义子域网站/网址:
> customer1.myapp.com
> customer2.myapp.com
> customer3.myapp.com@H_301_5@
允许客户使用自己的注册域名以使其域名指向我的应用程序需要采取哪些步骤?@H_301_5@
因此,在上面的示例中,如果“customer1”拥有“customer1.com” – 如何设置我的应用程序以便将对“customer1.com”的任何请求发送到“customer1.myapp.com”?另外,我的客户需要做什么呢?@H_301_5@
谢谢.@H_301_5@
解决方法
您的客户需要为其域名设置DNS,以便将其指向您的地址或将其中的一部分指向您的地址.这可能很难协调,特别是如果您托管服务的服务器的地址可能会不时更改.将客户的子域路由到子域更容易.
您还需要一个查找表,将客户的域映射到客户的帐户.这通常表示为:@H_301_5@
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”,与主机字段匹配.@H_301_5@
设置应用程序时,您需要具有响应所有任意域名的虚拟主机配置.如果它是唯一托管的站点,这很容易做到,因为这是默认行为.如果您在共享主机上执行此操作,则可能必须专门为每个客户域配置别名,这可能会造成麻烦.@H_301_5@