【问题标题】:How do I serve multiple rails apps on one domain (and sub)?如何在一个域(和子域)上提供多个 Rails 应用程序?
【发布时间】:2010-12-30 01:11:10
【问题描述】:
【问题讨论】:
标签:
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 上创建的每个页面硬编码一个路由。