Dan*_*ang 6 scala playframework playframework-2.0 playframework-2.3
我想将多个子域和/或根域指向单个Play Framework 2.3(Scala)应用程序,例如apples.com,bananas.com或buy.bananas.com.
根据请求所在的域,我希望有不同的路由.
理想情况下,它应该是这样的:
GET apples.com @controllers.ApplesController.home
GET bananas.com @controllers.BananasController.home
GET buy.bananas.com @controllers.BananasController.buy
Run Code Online (Sandbox Code Playgroud)
在Play Framework 2.3中有没有办法做到这一点?
我在java工作.这是在java中这样做的方式也许可以帮助
路线
GET / @controllers.ApplesController.index
GET /apples @controllers.ApplesController.home
GET /bananas @controllers.BananasController.home
GET /buybananas @controllers.BananasController.buy
Run Code Online (Sandbox Code Playgroud)
调节器
@With(CheckUrl.class)
public static Result index() {
return ok(index.render("Unable to resolve host."));
}
Run Code Online (Sandbox Code Playgroud)
CheckUrl.java
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道它是不是这样做的好方法.我已经试过request().uri()
但没有用request().host()
,这对我有用.也许可以帮助.