我已經定義了使用設計(會員,company_users等)的幾種類型的用戶,我想爲每種類型的用戶的登錄頁面使用不同的子域名。設計子域路由與設計不工作在heroku
我已經提到this railscast爲了實現子域的匹配和重定向到適當的動作。我routes.rb
文件看起來像這樣:
devise_for :company_users, :controllers => { :registrations => 'company_users/registrations', :sessions => 'company_users/sessions' }
devise_scope :company_user do
constraints Subdomain do
match '/' => 'company_users/sessions#new'
end
end
而且我lib/subdomain.rb
文件:
class Subdomain
def self.matches?(request)
request.subdomain.present? and request.subdomain =~ /\Acompanies\z/
end
end
在本地,它完美的作品。我已經使用companies.lvh.me:3000進行了測試(正如相同的railscast所示),並且它確實重定向到了正確的登錄頁面。
爲了嘗試使之在Heroku上運行,我添加了域名,使用heroku domains:add companies.mydomain.com
,並且我在我的DNS服務器上添加了一個新的CNAME記錄,指向我的Heroku應用程序。
但是,當我嘗試訪問companies.mydomain.com時,它將我重定向到根路徑,而不是正確的登錄頁面。我對發生的事情一無所知。任何幫助將不勝感激。
您的域名擁有與heroku域名相同的域名? Mine是.com.br,並且沒有將config.action_dispatch.tld_length = 2添加到production.rb我得到了相同的行爲,因爲Rails錯誤地檢測了子域。 –
嗯,感謝您的評論!我想這可以是它(我的tld也是br :))。如果它有效,我會要求你將你的評論變成答案,以便我能接受它。 – Renan
@Kadu:將您的評論轉換爲答案 - 此解決方案至少對我有效,應該提高評價。感謝您的協助! – fatty