我有一个rails应用程序,客户注册并获得这样的自定义子域网站/网址:
我需要采取哪些步骤才能让客户使用自己的注册域名,以便他们的域名指向我的应用?
因此,在上面的例子中,如果“customer1”拥有“customer1.com” - 我如何设置我的应用程序,以便将任何对“customer1.com”的请求发送到“customer1.myapp.com”?另外,我的客户需要做什么呢?
感谢。
答案 0 :(得分:7)
您的客户需要为其域名设置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”,与主机字段匹配。
设置应用程序时,您需要具有响应所有任意域名的虚拟主机配置。如果它是唯一托管的站点,这很容易做到,因为这是默认行为。如果您在共享主机上执行此操作,则可能必须专门为每个客户域配置别名,这可能会造成麻烦。