2013-05-17 2 views
2

devise (members, company_users 등)를 사용하는 몇 가지 유형의 사용자를 정의했으며 각 유형의 로그인 페이지에 다른 하위 도메인을 사용하고 싶습니다.heroku에서 작동하지 않는 하위 도메인 라우팅

하위 도메인 일치를 구현하고 적절한 동작으로 리디렉션하기 위해 this railscast을 참조했습니다.

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 파일 : 내 routes.rb 파일은 다음과 같습니다

class Subdomain 
    def self.matches?(request) 
    request.subdomain.present? and request.subdomain =~ /\Acompanies\z/ 
    end 
end 

로컬, 그것은 완벽하게 작동합니다. 필자는 회사를 이용하여 테스트했는데, 같은 railscast가 암시 하듯이 .lvh.me:3000이며 실제로 올바른 로그인 페이지로 리디렉션됩니다.

Heroku에서 작동되도록하려면 heroku domains:add companies.mydomain.com을 사용하여 도메인을 추가하고 내 DNS 서버에 Heroku 응용 프로그램을 가리키는 새 CNAME 레코드를 추가했습니다.

그러나 enterprises.mydomain.com에 액세스하려고하면 올바른 로그인 페이지가 아닌 루트 경로로 리디렉션됩니다. 나는 무슨 일이 일어나고 있는지 알 수 없다. 어떤 도움을 주시면 감사하겠습니다.

+1

도메인의 영웅 도메인과 동일한 도메인 이름이 있습니까? 내 .com.br이고 config.action_dispatch.tld_length = 2를 production.rb에 추가하지 않고 Rails가 서브 도메인을 잘못 결정 했으므로 동일한 동작이 발생했습니다. –

+0

흠, 의견을 보내 주셔서 감사합니다! 나는 그것이 될 수있을 것 같아 (내 tld도 br :) :)). 작동하는 경우, 귀하의 의견을 답변으로 바꾸어달라고 요청할 것입니다. – Renan

+0

@ 카두 (Kadu) : 귀하의 의견을 답변으로 변환하십시오.이 솔루션은 최소한 나를 위해 일했으며 upvoted되어야합니다. 도움을 주셔서 감사합니다! – fatty

답변

2

도메인의 tld가 heroku 도메인의 tld와 다른 경우에 발생합니다.

광산은 .com.br이고 config.action_dispatch.tld_length = 2를 production.rb에 추가해야합니다. 따라서 레일스는 URL을 올바르게 구문 분석하고 올바른 하위 도메인으로 리디렉션 할 수 있습니다.

관련 문제