[RUBY-ON-RAILS] 하나의 응용 프로그램에 여러 도메인을 처리하기 위해 라우팅 난간
RUBY-ON-RAILS하나의 응용 프로그램에 여러 도메인을 처리하기 위해 라우팅 난간
여기와 다른 몇 가지 유사한 질문에도 불구하고,이 문제에 대한 가능한 해결책을 찾을 수있었습니다. 이 질문에 레일 3 응답되지 않았 음이 간다, 그래서 여기에 보인다 :
나는 현재 사용자가 응용 프로그램의 자신의 인스턴스를 포함하는 자신의 하위 도메인을 만들 수있는 응용 프로그램이 있습니다. http://railscasts.com/episodes/221-subdomains-in-rails-3 - 레일 2에서 가장 버전 3에서, 하위 도메인-FU 보석을 사용하여 제공하고있는 동안 그것은 Railscast에 따라 극적으로 간단합니다.
그건 좋은 물건,하지만 나는 또한 사용자가 자신의 계정에 자신의 도메인 이름을 연결할 수있는 옵션을 제공합니다. 그들이 http://userx.mydomain.com가있을 수 있습니다 동안 그래서, http://userx.com가 아니라 관련이 선택하도록하고 싶습니다.
나는 레일 2에서이 일에 몇 참조를 찾았지만, 그 기술은 (더 이상 작업에 특히이 하나가 표시되지 않습니다 : https://feefighters.com/blog/hosting-multiple-domains-from-a-single-rails -앱/).
아무도 내가 해당 내용을 표시 할 수 있도록 임의의 도메인을 받아 컨트롤러에 따라 그것을 전달하는 경로를 사용하는 방법을 추천 할 수 있습니까?
업데이트 : 레오 니드의 적시 응답, 지금은 덕분에 대답의 대부분을받은, 그리고 코드에 신선 해 보이는했습니다. 궁극적 I합니다 (Railscast 용액으로부터)을 사용하고 routes.rb에 비트를 추가 한 것을 기존의 서브 도메인 코드 부가 필요했다. 내가 거기 아직 모든 방법 아니에요하지만 난 지금까지 무엇을 게시 할.
lib 디렉토리 / subdomain.rb에서 :
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != "www"
end
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain != "mydomain.com"
end
end
나는 작업 알려진, 최초의 모방에서 두 번째 클래스를 추가했습니다. 나는 단순히 조건을 추가 들어오는 도메인이 나는 주요 사이트를 호스팅하는거야하는 사람되지 않도록 그.
이 클래스는 routes.rb에 사용된다 :
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
자, 내가 도메인을 확인하기 위해 연과 함께 기존의 하위 도메인 코드 (다시, 그것은 작동하고 벌금을) 앞에 추가하고있다. 해당 도메인이 서버가 응답하고 주요 사이트가 지정된 컨트롤러에 전달, 작동하는 아래 하나되어 있지 않은 경우.
이 나타납니다이 작동하는 동안, 나는 아직은 일하는 모든 일이없는,하지만 난이 특정 문제가 해결되었다고 생각.
해결법
-
==============================
1.그것은 http://guides.rubyonrails.org/routing.html#advanced-constraints에 따라, 레일 3 실제로 간단합니다 :
그것은 http://guides.rubyonrails.org/routing.html#advanced-constraints에 따라, 레일 3 실제로 간단합니다 :
1) LIB / domain_constraint.rb에서 사용자 지정 제약 클래스를 정의 :
class DomainConstraint def initialize(domain) @domains = [domain].flatten end def matches?(request) @domains.include? request.domain end end
2) 새로운 블록 구문을 사용하여 경로에있는 클래스를 사용
constraints DomainConstraint.new('mydomain.com') do root :to => 'mydomain#index' end root :to => 'main#index'
또는 구식 옵션 구문
root :to => 'mydomain#index', :constraints => DomainConstraint.new('mydomain.com')
-
==============================
2.레일 5에서, 당신은 단순히이 당신의 경로에서 할 수 있습니다 :
레일 5에서, 당신은 단순히이 당신의 경로에서 할 수 있습니다 :
constraints subdomain: 'blogs' do match '/' => 'blogs#show' end
from https://stackoverflow.com/questions/4207657/rails-routing-to-handle-multiple-domains-on-single-application by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 신선한 레일 프로젝트에서 SQLite는에서 PostgreSQL을로 변경 (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 루비 온 레일즈. 어떻게이에서 액티브 레코드 .build 방법을 사용하십시오 관계에 속하는? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 레일과 루비 1.9와 잘못된 멀티 바이트 문자 (US-ASCII) (0) | 2020.02.09 |
[RUBY-ON-RAILS] 콘솔 안 함 레일 SQL 로깅 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 어떻게 Ajax 요청과 레일의 플래시를 처리하나요? (0) | 2020.02.09 |