2016-07-29 63 views
2

我正在为我在站点上托管的不同博客(example.blogthing.com和example2.blogthing.com)的Rails应用程序中添加子域。此网站在Heroku上托管。现在在Heroku上运行时从Rails应用程序中的Roots部署子域

,我发现这个answer on how to set up subdomain路由,它是当地像这样在我的根文件工作:

Rails.application.routes.draw do 
    resources :posts 
    resources :comments 

    root :to => "pages#home", :constraints => { :domain => "blogthing.com" }, as: nil 
    root :to => "setup#index" 

现在,它的部署到Heroku上,我注意到一个问题。当我进入根域时,它正确地路由回家。当我在其上添加任何子域时,浏览器显示无法联系到该站点的错误。

上面列出的非常简单的策略是否存在问题,需要与Heroku一起以不同的方式实施?

我还应该注意到,我有我的我的客户域的DNS我的Heroku网站 - 所以我试图用一个真正的.dom域,只是把我的example1.在它的前面。

回答

0

好吧,经过几天的故障排除,我想清除这个以防任何人在将来需要这个问题。

如果您在Heroku上运行带有自定义域的Rails应用程序,那么在Heroku中有必要的步骤都是,但也适用于您的域托管的任何位置。这是我的步骤,现在它已经成功。

首先,在Heroku中创建一个自定义域的记录。我通过运行heroku domains:add www.blog.example.com或其他方法从命令行执行此操作。这现在给了我们一个自定义的域,指向我们的DNS。

其次,我们需要在域主机上创建一条记录来指向这个子域。我使用Google Domains,并通过转到设置>自定义资源并为www.blog.创建新资源以匹配Heroku记录。

这现在存在于双方,所以最后一步是允许应用程序正确路由。在我Roots.rb文件,我发现this guide并适应它使用get,而不是match为Rails 4:

get '/' => 'blog#index', :constraints => { :subdomain => 'www.blog' } 
root :to => "pages#home" 

有了这样的,我部署的Heroku和它的作品使用约束。希望有所帮助。