2012-02-15 78 views
1

电梯有可能使用路由文件吗?我希望能够使用不同的配置(语言环境)部署我的应用程序。示例:我有两个域“mydomain.com”和“mydomain.pl”,运行同一个应用程序。我想让.pl网站拥有不同的网址,就像.com网站一样。 (mydomain.com/imprint和mydomain.pl/somethingelse,都是路由到代码中的一个文件)。电梯HTTP路由

谢谢!

回答

0

三个选项:

  1. 使用上电梯前的反向代理来处理重写路径和别名(Nginx的或Apache HTTP服务器就可以了)。

  2. 此添加到升降机Boot.scala:

 

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

  • 使用内部电梯响应周期:
  •  
    
        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 
        } 
    
    

    注:第一个选项会导致您对应用程序产生一整套外部规则,并且在开始时便宜且易于执行,但随着越来越多要维护的案例。第二个选项非常酷,但向用户公开了重定向路径,因此这导致我们选择第三个选项,在sintax中更复杂,但它不会将新网址公开给用户,url保持在Lift内部。有时候你想要公开新的url,有时你想隐藏它,所以这些选项都是你自己选择的。