1

我最近的任务是将我现有的 Rails 3 应用程序分离为标准和高级版本。高级版将具有所有现有功能,并添加新布局和新功能。理想情况下,我希望高级用户通过在当前 url 前加上一个子域来访问这个站点,例如“premium.somesite.com”/ 我不想更改的网站的标准版本,仍然可以通过默认 url 访问.

如果可能的话,我想简单地向退出视图和控制器添加一些逻辑,以确定如何处理请求是否正在使用子域。

我尝试关注rails 3 中的 Railcast子域,但是他在博客模型和数据库属性的上下文中使用子域,我希望我的子域在应用程序范围内。这甚至可能与子域?我该如何开始?


我试过的:

在乘客使用的我的 apache httpd.conf 文件中添加了一个额外的 VirtualHost:

<VirtualHost *:80>
  ServerName premium.mydomain.com
  DocumentRoot /somewhere/../myapp
  <Directory /somewhere/public>
    Allow from all
    Options -Multiviews
  </Directory>
</VirtualHost>

将以下内容添加到我的 routes.rb

class PremiumSubdomain
  def self.matches?(request)
    request.subdomain == "premium"
  end
end

MyApp::Application.routes.draw do    
  constraints(PremiumSubdomain) do    
    #all of my routes...    
  end    
end

发生什么了:

尝试使用高级子域导航到我的站点会导致找不到域,将约束添加到我的 route.rb 会阻止应用程序的其余部分在我的默认 url 上呈现任何内容。

4

1 回答 1

0

所以事实证明,虽然我确实在 apache 上正确配置了所有内容,但我们正在为我们的 DNS 服务器使用第三方,所以只需为我们的子域添加一条记录,其他一切都很好。

于 2012-11-02T22:22:01.000 回答