这有点奇怪,但我想在同一个域上提供多个网站。如果可能的话,我们希望避免使用子域名来保持用户的网址简单 - 不需要他们知道它是两个独立的应用程序。这纯粹是为了保持代码库分开。有什么想法吗?
例如:
Rails App 1(炼油厂CMS)服务:
Rails App 2(我们的真实应用程序)服务于:
我们使用ruby 1.9.2,ruby on rails,refinery cms,apache和passenger。
答案 0 :(得分:11)
如果您正在使用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]
这将在内部重新映射/帐户/ *到/ railsapp / account / *,因此只要您设置Rails应用程序处理的每个路径的重写,它就可以正常工作。
答案 1 :(得分:0)
子域名变得更容易(因此大多数网站都有shop.example.com),但您可能会使用基于名称的虚拟主机路由的重写规则。究竟如何做到这一点我不确定。更多针对SuperUser的Apache重写问题。
如果您使用的是SSL,则可能会出现问题。
答案 2 :(得分:0)
您可以将其设置为首先点击一个您希望大多数网址可以使用的应用,如果是404,您可以指示它接下来尝试其他应用,尽管这会比每个路由的路由慢但是它可以正常运行为在Refinery CMS上创建的每个页面硬编码路线。
答案 3 :(得分: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://tbaggery.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
希望这会有所帮助
欢呼声
sameera