2012-12-04 4 views
1

모든 컨트롤러 작업을 가로 채서 요청을 다른 서버로 전달할 수 있도록 필터를 만들었습니다. 사용자 에이전트를 기반으로 임시 리디렉션해야합니다.서비스 요청을 다른 서버로 리디렉션

그래서 http://www.mysite1.com

class DealsFilters { 

    def filters = { 
    all(controller: '*', action: '*') { 
     before = { 
       if (someConditionHere) 
       { 
        redirect(url:"http://www.mysite2/") 
        return 
       }    
     } 
    }  
} 

것이다 요청이 내가 궁금 오전에 다음을하고 그것을 올바르게 mysite2에 전달 될 PARAMS 모든?
즉 mysite1 서비스의 역할 등 ...

mysite2이 mysite1의 새 버전이 (mysite1이 mysite2 테스트 한 후 decommisioned됩니다)이며, 사용자 데이터, 업데이트 거래를 얻을 새로운 사용자를 추가 요청을 수신 .

리디렉션만큼 간단합니까?

감사

+0


은 간단한 (301)를 작성하는 방해하는 몇 가지 이유가 가상 호스트 구성에 리디렉션 위치 :

찾을 수 아래의 링크 나에게 대답의 대부분을 준? 그러한 추가적이고 구체적인 코드를 피하는 것이 더 좋을 것입니다. – lucke84

+0

@lucke - 요청에서 사용자 에이전트를 추출하고 특정 문자열, 즉 모바일 장치 응용 프로그램 버전이 포함되어있는 경우 리디렉션해야합니다. 이것이 가상 호스트 구성에서 가능한지 확실하지 않습니까? –

+0

gotcha와 나는 그것이 가상 호스트 config AFAIK에서 가능하다고 생각하지 않는다. – lucke84

답변

1

documentation는 URL 매개 변수와 함께 리디렉션을 수행하는 경우, 귀하의 URL이 새 요청을 전송하는 데 필요한 모든 정보를 포함해야한다고 말한다.

나는 당신이 당신의 URL을 다시해야합니다 생각, 더 많거나 적은 같은 :

redirect(base: 'http://www.mysite2/', controller: params.controller, action: params.action, params: params) 

테스트하지하지만 대부분의 경우 작동합니다. 알려주세요 :)

+0

실제로 grails 1.3.7을 사용하고 있습니다. http://grails.org/doc/1.3.7/ref/Controllers/redirect.html URL을 사용할 수 있습니까? –

+0

redirect (url : 'http : //www.mysite2/')는 grails 1.3.x에서도 유효한 호출입니다. 불행하게도 리다이렉션을 수행하기위한 기본 매개 변수는 없습니다. grails 2 로의 업그레이드가 옵션이 아닌 것 같은가요? – lucke84

+0

업그레이드는 현재 옵션이 아닙니다 :( –

관련 문제