2016-06-26 38 views
0

我搜索了網絡周圍,有幫助我升技的答案,但我仍然卡住,所以這裏。多個域指向單軌應用程序顯示具有相同的url路徑不同的內容

我是一個Rails 4應用程序,它允許用戶創建一個傳記/博客,然後使用他們自己的域訪問它。

用戶可以從多個預製網站模板(主頁,關於我的頁面,我的愛好頁面等)中進行選擇,然後使用CMS加載其內容。當訪問者訪問他們的域名時,內容將使用他們選擇的模板顯示。

例如:

用戶1:

域:www.user1.com

模板:模板

用戶2:

域:萬維網.user2.com

模板:模板B

預期的效果

當訪問者訪問www.user1.com,他們將看到的主頁。當他們點擊「關於我」時,他們將重定向到www.user1.com/about-me。如果訪問者訪問用戶2的「關於我」頁面,他們將看到www.user2.com/about-me。

我的問題在這裏,我該如何設置?

基於這樣的回答:Rails routing to handle multiple domains on single application

class Domain 
    def self.matches?(request) 
    request.domain.present? && request.domain != "mydomain.com" 
    end 
end 

------in routes.rb------ 

require 'subdomain' 
constraints(Domain) do 
    match '/' => 'blogs#show' 
end 

我知道我可以路線不同的域相比,我的一個單獨的控制器,但是,我需要將其路由到不同的模板控制器,它可以在任何時刻改變(用戶可以隨意更改模板)。我知道我可以設置一個通用控制器,它可以讀取傳入請求,然後根據主機名,我可以提取適當的模板,然後將請求重定向到該模板的控制器(例如:Template1Controller),但是URL獲取搞砸了,變得像「/ template/template1/index」或「/ template/template1/about-me」,這是非常糟糕和醜陋的。此外,處理僅針對某些模板的路徑將非常棘手(模板A可能有「我的簡歷」頁面,而模板B可能有「家族歷史記錄」頁面)。

有沒有辦法做到這一點?

我想過一種方法,我有一個控制器可以處理所有內容(不帶重定向),然後調用render template1/index,但我認爲這是一種不好的方法(不同的模板可能需要不同的數據頁)。

順便說一句,這將在EC2上託管。

編輯 我在找落實頗爲相似,這個問題Mapping multiple domain names to different resources in a Rails app,但不幸的是隨後沒有答案。我希望5年後,有人可能會知道如何做到這一點。

謝謝!

回答

0

我用Heroku做這件事很簡單。這可能並不難。

一旦DNS設置.. Rails的層可以像...

  1. 創建的ApplicationController一個的before_filter。 before_filter :domain_check

  2. 在我domain_check方法我只是if request.host ~= /whatever/ do this elsif ... elsif ... end

「做這個」可以是一個重定向或渲染或什麼的。

相關問題