在Heroku上运行时从Roots in Rails应用程序部署子域

时间:2016-07-29 04:07:11

标签: ruby-on-rails heroku

我正在为我网站上托管的不同博客添加子域名(example.blogthing.com vs example2.blogthing.com)。这个网站是在Heroku上托管的。

现在,我发现了这个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.放在它前面。

1 个答案:

答案 0 :(得分: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,它使用该约束。希望有所帮助。