您的客戶需要設置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」,無論主機相匹配設置了一個用戶模型領域。
當您設置您的應用程序時,您將需要一個虛擬主機配置來響應所有任意域名。如果它是唯一託管的網站,這很容易,因爲這是默認行爲。如果你在共享主機上這樣做,你可能需要爲每個客戶域專門配置一個別名,這可能是一個麻煩。