我最近的任务是将现有的Rails 3应用程序分离为标准版和高级版。高级版本将具有所有现有功能,添加了新布局和新功能。理想情况下,我希望premuim用户通过为当前网址添加前缀为子网域来访问此网站,例如“premium.somesite.com”/我不想更改的网站的标准版本,仍然可以通过默认网址访问
如果可能的话,我想简单地为退出的视图和控制器添加一些逻辑,以确定如何处理请求是否正在使用子域。
我尝试跟踪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上呈现任何内容。
答案 0 :(得分:0)
所以事实证明,虽然我确实已经在apache上配置了所有内容,但我们在DNS服务器上使用了第三方,所以这只是为我们的子域添加记录而其他一切都是桃子的。