2012-02-15 9 views
1

리프트에서 라우팅 파일을 사용할 수 있습니까? 다른 configs (로케일)로 내 앱을 배포 할 수 있기를 원합니다. 샘플 : 동일한 응용 프로그램을 실행하는 두 개의 도메인 "mydomain.com"과 "mydomain.pl"이 있습니다. .pl 사이트가 .com URL과 다른 URL을 갖기를 원합니다. (mydomain.com/imprint 및 mydomain.pl/somethingelse, 모두 코드 내에서 하나의 파일로 라우팅됩니다).HTTP 라우팅 리프트

감사합니다.

답변

0

세 가지 옵션 :

  1. 는 재 작성 경로 및 별명을 (의 nginx 또는 Apache HTTP Server가 트릭을 할 것입니다) 거래 리프트의 전면에 리버스 프록시를 사용합니다.

  2. 리프트 Boot.scala이 추가 :

 

    val sampleTemplate = Templates("imprint" :: Nil) 
    def sampleResponse : Box[LiftResponse] = 
    for { 
     req 
       session.processTemplate(sampleTemplate, req, req.path, 200) 
      case _ => 
       Empty 
      }  
     } 
    } yield { 
     response 
    } 

    LiftRules.responseTransformers.append { 
     case resp if resp.toResponse.code == 404 => sampleResponse openOr resp 
     case resp => resp 
    } 

참고 :

 

    LiftRules.statelessRewrite.prepend(NamedPF("PublicJobsRedirect") { 
     case RewriteRequest(
      ParsePath("somethingelse" :: Nil, _, _, _), _, _) => 
       RewriteResponse("imprint" :: Nil) 
    }) 

  • 를 사용하여 내부 리프트 응답주기
      을 : 첫 번째 옵션은 응용 프로그램에 대한 외부 규칙을 완전히 엉망으로 만들고 처음에는 비용이 적게 들고 쉽지만 점점 더 무서워집니다. 유지할 사건들. 두 번째 옵션은 매우 멋지지만 리다이렉트 경로를 사용자에게 노출하므로 sintax에서 더 복잡한 옵션으로 연결되지만 사용자에게 새 URL을 노출시키지 않습니다. URL은 내부 리프트로 유지됩니다. 때로는 새 URL을 노출하고 싶을 때가 있고 때로는 숨길 수 있기 때문에 옵션이 있습니다.