2015-03-03 41 views
3

我有兩個域上的Apache:domain1.tld & domain2.tld如何設置兩個域指向與Passenger相同的應用程序,但具有不同的Rails功能?

目前我有domain1.tld與客運工作完美,但我也需要domain2.tld指向此相同的應用程序,但是當到達這第二個領域,這將有不同的功能(即,呼叫不同的控制器並且具有一些不同的路線)比當用戶擊中domain1.tld時。

你如何在Rails中配置這個傳統?

至於Apache的配置得好,我已在爲domain1.tld如下:

DocumentRoot /home/username/apps/domain1.tld/production/current/public 
<Directory /home/username/apps/domain1.tld/production/current/public> 
    AllowOverride all 
    Options -MultiViews 
    Require all granted 
</Directory> 

ErrorLog /home/username/logs/domain1.tld.error.log 
CustomLog /home/username/logs/domain1.tld.access.log combined 

將需要domain2.tld爲Apache的配置是什麼?

回答

2

您的設置在某個時候也可能演變爲擁有兩個完全獨立的應用程序。我會讓你成爲何時何地不需要的更好的評判。話雖如此,你可以實現你在Rails中使用Routing Constraints所要求的。對於例如:(請注意,這不是實現這一目標的唯一途徑,但我的首選方式)

root to: 'home#index1', as: :domain1, constraints: {|req| req.host == 'domain1.tld' } 
root to: 'home#index2', as: :domain2, constraints: {|req| req.host == 'domain2.tld'} 
root to: 'home#index' 

要添加一個新的Apache主機,一個增加了一個虛擬主機,並指向相同的公共文件夾中主要應用。因此,在這種情況下,創建與第一個配置文件中相同的所有信息,只需添加domain2.tld作爲新的虛擬主機名即可。

+1

欣賞答案。既然你可能錯過了關於'httpd' config的部分,我已經在上面澄清了我的問題,並在我的當前配置中詳細說明了一些問題,並直接標註了問題的其他部分。 – ylluminate 2015-03-03 21:37:00

+0

我不確定您是否可以在Apache級別上實現此目標。因爲調用適當的控制器動作的責任屬於Rails棧而不是Apache。 – 2015-03-03 21:46:32

+0

這是一個雙重問題。對於你在rails配置上的建議你是正確的,但是Apache同樣需要注意'domain2.tld'。 – ylluminate 2015-03-03 21:48:36

相關問題