여기와 다른 곳에서 몇 가지 유사한 질문에도 불구하고이 문제에 대한 실행 가능한 해결책을 찾을 수 없었습니다. Rails 3에서는이 질문에 대한 답변이없는 것 같습니다.
현재 사용자가 애플리케이션 인스턴스를 포함하는 자체 하위 도메인을 만들 수있는 애플리케이션이 있습니다. Rails 2에서는 subdomain-fu gem을 사용하는 것이 가장 좋은 반면, 버전 3에서는 Railscast- http: //railscasts.com/episodes/221-subdomains-in-rails-3에 따라 훨씬 더 간단 합니다.
그것은 좋은 일이지만 사용자가 자신의 도메인 이름을 자신의 계정과 연결할 수있는 옵션도 제공하고 싶습니다. 따라서 http://userx.mydomain.com 이있을 수 있지만 http://userx.com도 연결 되도록 선택하고 싶습니다 .
Rails 2에서이 작업에 대한 몇 가지 참조를 찾았지만 이러한 기술은 더 이상 작동하지 않는 것 같습니다 (특히이 기술 : https://feefighters.com/blog/hosting-multiple-domains-from-a-single-rails). -app / ).
누구든지 경로를 사용하여 임의의 도메인을 수락하고 컨트롤러에 전달하여 적절한 콘텐츠를 표시 할 수있는 방법을 추천 할 수 있습니까?
업데이트 : Leonid의 적시 응답과 코드에 대한 새로운 모습 덕분에 대부분의 대답을 얻었습니다. 궁극적으로 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
나는 일하는 것으로 알려진 첫 번째 클래스를 모방하여 두 번째 클래스를 추가했습니다. 들어오는 도메인이 기본 사이트를 호스팅하는 도메인이 아닌지 확인하는 조건을 추가하기 만하면됩니다.
이 클래스는 route.rb에서 사용됩니다.
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
여기서는 도메인을 확인하기 위해 스탠자를 사용하여 기존 하위 도메인 코드 (다시 정상적으로 작동 함)를 추가하고 있습니다. 이 서버가 해당 도메인에 응답하고 기본 사이트가 작동하는 도메인이 아닌 경우 지정된 컨트롤러로 전달합니다.
작동하는 것처럼 보이지만 아직 모든 것이 작동하지는 않지만이 특정 문제가 해결 된 것 같습니다.