5

여러 개의 하위 도메인 및/또는 루트 도메인을 단일 Play Framework 2.3 (스칼라) 애플리케이션 (예 : apples.com, bananas.com 또는 buy.bananas.com)으로 지정하려고합니다.Play Framework 2.3의 도메인 경로

요청이 들어오는 도메인에 따라 다른 경로가 필요합니다.

GET apples.com  @controllers.ApplesController.home 
GET bananas.com  @controllers.BananasController.home 
GET buy.bananas.com @controllers.BananasController.buy 

가 플레이 프레임 워크 2.3에서이 작업을 수행 할 수있는 방법이 있나요 :

이상적으로,이 같은 일을해야합니까?

+5

이 항목은 http 서버가 더 잘 처리합니다 ... 프레임 워크가 아닙니다. 그러나 이러한 기능 중 일부는 얻을 수 있습니다. 자세한 내용은 -> http://typesafe.com/activator/template/play-multidomain-seed 및 https://github.com/adrianhurt/play-multidomain-seed/blob/master/app/Global.scala –

+1

을 참조하십시오. @ SarveshKumarSingh은 의견 대신 대답을 쓰고, upvote/accept에 좋은 포인트입니다. – biesior

+0

@biesior 솔루션의 범위는 답에 맞지 않습니다. 이해해야 할 것이 너무 많고 전체 프로젝트를 특정 방식으로 작성해야합니다. –

답변

5

나는 오전 자바에서 할 수있는 방법이 CheckUrl.java

어쩌면 그

루트

GET /   @controllers.ApplesController.index 
GET /apples  @controllers.ApplesController.home 
GET /bananas  @controllers.BananasController.home 
GET /buybananas @controllers.BananasController.buy 

컨트롤러

@With(CheckUrl.class) 
public static Result index() { 
     return ok(index.render("Unable to resolve host.")); 
    } 

을 도울 수있는 자바라도 좋습니다에 작업

public class CheckUrl extends play.mvc.Action.Simple { 

    public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable { 

     String host = request().host(); 
     System.out.println("HOST IS "+host); 

       if (host.equalsIgnoreCase("apples.com")) { 

      return F.Promise.pure(redirect("/apples")); 

     }else if (host.equalsIgnoreCase("bananas.com ")){ 

     return F.Promise.pure(redirect("/bananas")); 

     }else if (host.equalsIgnoreCase("buy.bananas.com")){ 

     return F.Promise.pure(redirect("/buybananas")); 
     }else{ 
      return delegate.call(ctx); 
     } 



} 

I 그게 좋은 방법인지 모르겠다. 나는 request().uri()으로 시도했지만 request().host()으로는 그걸 시도하지 않았다. 그게 도움이 될지도 모른다. 아마도 도움이 될지도 모른다.

+1

이것은 내 문제에 대한 해결책입니다. 고마워요. 다른 사람이 내 질문에 대한 의견으로 게시 한 github 링크도 체크 아웃했는지 확인하십시오. 그것은 실제로 제 의견으로는 더 좋고 깨끗한 방법이므로 도움이 될 것입니다. –