我搜索了网络周围,有帮助我升技的答案,但我仍然卡住,所以这里。多个域指向单轨应用程序显示具有相同的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年后,有人可能会知道如何做到这一点。
谢谢!