这有点奇怪,但我想在同一个域上服务多个网站。如果可能的话,我们希望避免使用子域以使用户的 url 简单——他们不需要知道这是两个独立的应用程序。这纯粹是为了保持代码库分开。有任何想法吗?
例如:
Rails App 1 (Refinery CMS) 服务于:
Rails App 2(我们真正的应用程序)服务于:
我们使用ruby 1.9.2、ruby on rails、refinery cms、apache 和passenger。
这有点奇怪,但我想在同一个域上服务多个网站。如果可能的话,我们希望避免使用子域以使用户的 url 简单——他们不需要知道这是两个独立的应用程序。这纯粹是为了保持代码库分开。有任何想法吗?
例如:
Rails App 1 (Refinery CMS) 服务于:
Rails App 2(我们真正的应用程序)服务于:
我们使用ruby 1.9.2、ruby on rails、refinery cms、apache 和passenger。
如果您使用乘客,请查看手册的部署到子 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 应用程序处理的每个路径设置一个重写,它应该可以正常工作。
子域使它更容易(因此大多数网站都有 shop.example.com),但您可能可以使用基于名称的虚拟主机路由的重写规则。我不确定该怎么做。更多关于 SuperUser 的 Apache 重写问题。
警告如果您使用 SSL,您可能会遇到问题。
目前我也在研究同一种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
希望这可以帮助
干杯
同龄人
您可以将其设置为首先点击一个您希望大多数 URL 可以工作的应用程序,如果它是 404,您可以指示它接下来尝试另一个应用程序,尽管这会比每条路由路由要慢,但它无需硬编码即可工作在 Refinery CMS 上创建的每个页面的路由。