【问题标题】:How do I serve multiple rails apps on one domain (and sub)?如何在一个域(和子域)上提供多个 Rails 应用程序?
【发布时间】:2010-12-30 01:11:10
【问题描述】:

这有点奇怪,但我想为同一个域上的多个网站提供服务。如果可能,我们希望避免使用子域,以使用户的 url 简单 - 他们不需要知道这是两个独立的应用程序。这纯粹是为了保持代码库分开。有什么想法吗?

例如:

Rails App 1(炼油厂 CMS)服务:

http://example.com/

http://example.com/about

http://example.com/pricing

Rails App 2(我们真正的应用)服务:

http://example.com/account

http://example.com/store

http://example.com/listings

我们使用 ruby​​ 1.9.2、ruby on rails、refinery cms、apache 和 Passenger。

【问题讨论】:

    标签: ruby-on-rails apache passenger refinerycms


    【解决方案1】:

    如果您使用Passenger,请查看手册的Deploying to a sub URI 部分——在子URI 上设置应用程序非常简单。您可能还需要在应用配置中设置config.action_controller.relative_url_root。

    编辑:我误读了这个问题;不是每个 URI 一个应用程序,而是一个应用程序服务于一些(但不是全部)端点。这实际上也很容易通过一些基本的重写来完成。

    将您的 Rails 应用部署到,比如说,/railsapp(但不设置 relative_url_root)。现在,在 .htaccess 中:

    RewriteRule ^account/(.*)$ railsapp/account/$1 [L]
    

    这将在内部将 /account/* 重新映射到 /railsapp/account/*,因此只要您为 Rails 应用处理的每个路径设置一个重写,它应该可以正常工作。

    【讨论】:

    • 我想我明白了。会试一试。谢谢!
    【解决方案2】:

    子域使事情变得更容易(这就是为什么大多数网站都有 shop.example.com),但您可能可以将重写规则与基于名称的虚拟主机路由一起使用。我不确定该怎么做。更多关于 SuperUser 的 Apache 重写问题。

    请注意,如果您使用 SSL,则可能会出现问题。

    【讨论】:

      【解决方案3】:

      您可以将其设置为首先点击一个您希望大多数 URL 可以工作的应用程序,如果它是 404,您可以指示它接下来尝试另一个应用程序,虽然这会比按路由路由要慢,但它可以在没有路由的情况下工作为在 Refinery CMS 上创建的每个页面硬编码一个路由。

      【讨论】:

        【解决方案4】:

        目前我也在研究同一种 CMS。就我而言,我还需要多个子域,例如

        www.test1.mydomain.com

        www.test2.mydomain.com

        www.test3.mydomain.com

        www.test4.mydomain.com

        这就是我所做的

        在 rails 3 中(如果您在 rails3 上),您可以使用请求对象获取子域。 (如果你在 Rails 2.x 上,你可以使用 sub domain_fu 插件)

        在我的例子中,我使用了一个前置过滤器来获取子域,之后我根据子域加载站点

        对于开发,请使用以下公共域“lvh.me”

        http://tbaggery.com/2010/03/04/smack-a-ho-st.html

        这对我很有用http://railscasts.com/episodes/221-subdomains-in-rails-3

        让用户将他们的域转发到您的子域(带有掩码)

        ex : www.clientdomain.com --> http://client.mydomain.com

        希望对你有帮助

        干杯

        同人

        【讨论】:

        • 海报专门要求托管没有子域。
        猜你喜欢
        • 2021-10-01
        • 2012-02-10
        • 2014-11-08
        • 2019-04-05
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        相关资源
        最近更新 更多