【发布时间】:2012-10-22 18:11:20
【问题描述】:
我最近的任务是将我现有的 Rails 3 应用程序分离为标准和高级版本。高级版将具有所有现有功能,并添加新布局和新功能。理想情况下,我希望高级用户通过在当前 url 前加上子域来访问该站点,例如“premium.somesite.com”/ 我不想更改的网站的标准版本,仍然可以通过默认 url 访问.
如果可能的话,我想简单地向退出视图和控制器添加一些逻辑,以确定如何处理请求是否正在使用子域。
我尝试关注 Railcast subdomains in rails 3,但是他在博客模型和数据库属性的上下文中使用子域,而我希望我的域是应用程序范围的。这甚至可能与子域?我该如何开始?
我的尝试:
在乘客使用的我的 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 上呈现任何内容。
【问题讨论】:
标签: ruby-on-rails-3 routing subdomain