2

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

例如:

Rails App 1 (Refinery 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。

4

4 回答 4

11

如果您使用乘客,请查看手册的部署到子 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 应用程序处理的每个路径设置一个重写,它应该可以正常工作。

于 2010-12-30T01:26:43.313 回答
0

子域使它更容易(因此大多数网站都有 shop.example.com),但您可能可以使用基于名称的虚拟主机路由的重写规则。我不确定该怎么做。更多关于 SuperUser 的 Apache 重写问题。

警告如果您使用 SSL,您可能会遇到问题。

于 2010-12-30T01:15:40.443 回答
0

目前我也在研究同一种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://tbagery.com/2010/03/04/smack-a-ho-st.html

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

让用户将他们的域转发到您的子域(带屏蔽)

例如:www.clientdomain.com --> http://client.mydomain.com

希望这可以帮助

干杯

同龄人

于 2010-12-30T06:23:28.627 回答
0

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

于 2010-12-30T02:53:51.447 回答