【问题标题】:Multiple Domain pointing to single rails app displaying different content with the same url path指向单个 Rails 应用程序的多个域显示具有相同 url 路径的不同内容
【发布时间】:2016-06-26 11:38:01
【问题描述】:

我在网上搜索了一些对我有所帮助的答案,但是我仍然卡住了,所以就这样吧。

我是一个 Rails 4 应用程序,它允许用户创建传记/博客,然后使用自己的域访问它。

用户可以从几个预制的网站模板(主页、关于我的页面、我的爱好页面等)中进行选择,然后使用 CMS 加载他们的内容。当访问者访问他们的域时,内容将使用他们选择的模板显示。

例如:

用户 1:

域名:www.user1.com

模板:模板 A

用户 2:

域名:www.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 年后,有人可能知道如何完成这项工作。

谢谢!

【问题讨论】:

    标签: ruby-on-rails amazon-web-services


    【解决方案1】:

    我用 Heroku 做这个很简单。可能在任何地方都不难。

    一旦您设置了 DNS..Rails 层可能看起来像...

    1. 在 ApplicationController 中创建一个 before_filter。 before_filter :domain_check

    2. 在我的domain_check 方法中,我只有if request.host ~= /whatever/ do this elsif ... elsif ... end

    “这样做”可以是重定向或渲染或其他。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 2015-09-12
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多