2015-12-14 16 views
5

Come posso creare sottodomini per ogni utente che si registra sul mio sito? Ad esempio userone.mysite.com e usertwo.mysite.com.Come creare dinamiche rotaie di sottodominio

In php può essere fatto usando l'host virtuale apache, ma non riesco a capire come fare lo stesso in Ruby on Rails. Ecco come può essere fatto in apache

<VirtualHost *:80> 
    ServerName www.mysite.com 
    ServerAlias mysite.com *.mysite.com 
    DocumentRoot /www/domain 
</VirtualHost> 

Sono passato attraverso molti blog ma non sono riuscito a trovare la soluzione. Si prega di consulenza.

+0

Hai bisogno di sottodominio fisico o solo dominio virtuale –

+0

Ho bisogno del dominio virtuale –

risposta

1
<VirtualHost *:80> 
     ServerName mysite.com 
     ServerAlias *.my_site.com 
     # !!! Be sure to point DocumentRoot to 'public'! 
     DocumentRoot /var/www/html/my_site 
     <Directory /var/www/html/my_site> 
     # This relaxes Apache security settings. 
     AllowOverride all 
     # MultiViews must be turned off. 
     Options -MultiViews 
     # Uncomment this if you're on Apache >= 2.4: 
     Require all granted 
     </Directory> 
    </VirtualHost> 

e non ha dimenticato il cambiamento cname * ingresso al dominio in DNS

+0

Per favore fammi sapere il provider hostintg in modo che possa fornirti la configurazione esatta del nome –

0

aggiunta di Dinesh Saini risposta - è inoltre necessario aggiornare Rails configs di conseguenza. Ad esempio, se hai bisogno di sottodomini profondi dovresti cambiare config.action_dispatch.tld_length in staging.rb e dovresti ricontrollare routes.rb.

esempio dal vivo: ho dovuto implementare negozio visualizzazione dal sottodominio - esempio URL my-shop.shop.testapp.com.So quello che ho fatto ad eccezione di configurazione del server cambia

constraints (lambda { |req| req.subdomains[1] == 'shop' }) do 
     get '/', to: 'shopes#show', as: :shop 
    end 

controller di trovare risorse

Shop.find_by(id: request.subdomains[0]) 

ho anche impostato

config.action_dispatch.tld_length = 2 

l'ho fatto per staging env perché ha tale URL staging.testapp.com quindi ho bisogno di un altro livello di sottodominio. Penso che per te sia bene controllare che sia 1.