基于虚拟主机(Host HTTP header)的Rails路由

5

能否根据请求URL的主机部分指定Ruby on Rails路由?

在config/routes.rb文件中,我有以下内容:

root :to => 'entities#index'

但是我希望使用相同的代码库为多个站点提供服务,每个站点都有自己的默认控制器。

1个回答

13

2
还要记得将这些约束条件放在未受限制的“根”行之前,因为它们是按顺序处理的。我遇到的另一个问题是,除非你的“siteone”域DNS配置为指向本地主机,否则无法在本地服务器上测试新路由。一旦你做对了并部署到生产环境中,你需要重新配置你的DNS以指向你的生产服务器。 - Amin Ariana
1
@AminAriana,您可以通过将主机名添加到约束条件中,并使用本地IP(127.0.0.1)将其添加到/etc/hosts文件中,在本地测试路由而无需修改DNS服务器。 - Eero
@Eero:谢谢,你说得对,我记得在Windows上有这个功能。但是我当时用的是Mac,不熟悉如何操作。看起来有一种方法:http://decoding.wordpress.com/2009/04/06/how-to-edit-the-hosts-file-in-mac-os-x-leopard/ ...但我选择从DNS服务器更改它。这样我的代码继承者就不必欺骗他们的机器了。 - Amin Ariana
能否使用除“Host”之外的标头来完成这个操作?比如自定义标头,例如“APIVersion”?!? - Leonardo
@Leonardo 这里是你可以使用的方法列表:http://guides.rubyonrails.org/action_controller_overview.html#the-request-object,但它们需要返回一个字符串,根据http://guides.rubyonrails.org/routing.html#request-based-constraints文档。 - JCorcuera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接