2010-07-15 3 views
8

Ho un app rotaie dove i clienti registrarsi e ottenere un sito sottodominio custom/url in questo modo:Come consentire ai siti dei clienti sottodominio di utilizzare il proprio dominio

  • customer1.myapp.com
  • Customer2. myapp.com
  • customer3.myapp.com

quali sono i passi che devo prendere per consentire al consumatore di utilizzare il proprio nome di dominio registrato in modo tale che i loro punti di dominio per la mia app?

Quindi, nell'esempio sopra, se "cliente1" possiede "cliente1.com" - come posso configurare la mia app in modo che tutte le richieste a "customer1.com" vengano inviate a "customer1.myapp.com"? Inoltre, cosa dovrebbe fare il cliente per la sua parte?

Grazie.

risposta

6

Il cliente dovrà configurare DNS Perché il proprio dominio lo indichi, o parte di esso, al proprio indirizzo. Questo può essere difficile da coordinare, soprattutto se l'indirizzo del server su cui si sta ospitando il servizio può cambiare di volta in volta. È molto più semplice indirizzare il sottodominio di un cliente al tuo sottodominio.

Avrai anche bisogno di una tabella di ricerca che mappa il dominio di un cliente sull'account di un cliente. Questo è in genere espresso come qualcosa di simile:

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 

che presume di avere un modello di cliente con un campo 'host' impostato con qualcosa come 'customer1.myapp.com' o 'customer1.com', qualunque sia l'host corrisponde campo.

Quando si imposta l'app, è necessario disporre di una configurazione di host virtuale che risponda a tutti i nomi di domini arbitrari. Questo è facile da fare se è l'unico sito ospitato, poiché questo è il comportamento predefinito. Se lo stai facendo su un hosting condiviso, potresti dover configurare un alias specifico per ogni dominio del cliente, il che può essere una seccatura.