2013-04-30 6 views
1

Railscast에 따라 레일스 애플리케이션에 서브 도메인을 추가하면 here이되고 모든 것이 서브 도메인과 잘 작동합니다. 이제는 요청 된 하위 도메인이 없으면 하위 도메인없이 루트 도메인에 다시 링크하는 방법을 알아낼 수 없습니다.URL에서 하위 도메인을 제거하려면 어떻게해야합니까?

나는 내 application_controller.rb 파일에 다음과 같은 추가 해봤 @city_or_state가 요청 된 하위 도메인이 유효 날씨 결정

redirect_to root_path(subdomain: false) if @city_or_state.nil? 

. redirect_to은 루트로 돌아가지만 하위 도메인은 제거하지 않습니다.

예를 들어 사용자가 invalid.domain.com (으)로 이동하려고 시도하면 루트로 리디렉션되지만 하위 도메인은 제거되지 않습니다.

나는 당신은 내가 그것을 작동 생각이 방법을 시도 할 수 domain.com

+0

레일즈 버전은 무엇입니까? 그건 4.0.0.beta1에서 깨졌지만 4.0.0.rc1에서 수정되었습니다 –

+0

레일즈 3.1에서 작업하고 있습니다 –

답변

4

좋아, 나는 그것을 얻었다. 다음을 사용해야했습니다. redirect_to root_url(:host => request.domain)

시도했을 때 root_path(:host => request.domain) 시도했을 때 작동하지 않았습니다. root_url에서만 작동합니다.

나는 here

존재하지 않는 도메인을 방문하려고, 잘못된 하위 도메인이 URL에서 제거 다니엘 케오 일부 의견에 답을 발견했다.

2

로 리디렉션 invalid.domain.com을 얻으려고! application_controller.rb에서 당신은 그럼 당신은 컨트롤러에이 코드를 추가 before_filter :validate_subdomain 을 추가 할 수 있습니다

private 
def validate_subdomain 
    # @city_or_state must be initialized before this 
    if @city_or_state.nil? 
    redirect_to request.domain 
    end 
end 
+0

@akjoe 작동 했습니까? 로컬 컴퓨터에서 하위 도메인을 구성해야하므로 테스트하지 않았습니다. 따라서 요청 도메인에 대한 리디렉션 테스트를 수행했지만 도메인 자체에서 테스트했습니다. – tbem

+0

나는 내 책상으로 돌아가서 알려주 겠어. 고마워! –

+0

'request.domain'을 추가하고 'blue.lvh.me:3000'(유효하지 않은 하위 도메인)을 시도했지만 방금 빈 페이지로 이동했습니다. 나는 로그에서 이것을 꺼냈다 : '시작하기'/ posts "from 127.0.0.1 at 2013-04-30 12:40:14 -0800 처리 중 PostsController # index as HTML 도시로드 (0.1ms) SELECT 도시 . * FROM "cities"WHEN "cities". "subdomain"= 'Blue'LIMIT 1 상태로드 (0.2ms) SELECT "states". * FROM 상태는 "."subdomain "= 'Blue' LIMIT 1 http://blue.lvh.me:3000lvh.me '로 리디렉션되었습니다. –

관련 문제