2016-07-29 57 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和它的作品使用約束。希望有所幫助。

相關問題