我搜索了網絡周圍,有幫助我升技的答案,但我仍然卡住,所以這裏。多個域指向單軌應用程序顯示具有相同的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年後,有人可能會知道如何做到這一點。
謝謝!