Play Framework 2.3 中的域路由
Domain routes in Play Framework 2.3
我想将多个子域 and/or 根域指向单个 Play Framework 2.3 (Scala) 应用程序,例如 apples.com、bananas.com 或购买。bananas.com .
根据请求来自哪个域,我希望有不同的路由。
理想情况下,它应该像这样工作:
GET apples.com @controllers.ApplesController.home
GET bananas.com @controllers.BananasController.home
GET buy.bananas.com @controllers.BananasController.buy
有没有办法在 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
控制器
@With(CheckUrl.class)
public static Result index() {
return ok(index.render("Unable to resolve host."));
}
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);
}
}
我不知道这样做 it.I 的好方法是否已经用 request().uri()
尝试过,但没有用 request().host()
尝试过,并且对 me.Maybe 有用,这可能会有所帮助。
我想将多个子域 and/or 根域指向单个 Play Framework 2.3 (Scala) 应用程序,例如 apples.com、bananas.com 或购买。bananas.com .
根据请求来自哪个域,我希望有不同的路由。
理想情况下,它应该像这样工作:
GET apples.com @controllers.ApplesController.home
GET bananas.com @controllers.BananasController.home
GET buy.bananas.com @controllers.BananasController.buy
有没有办法在 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
控制器
@With(CheckUrl.class)
public static Result index() {
return ok(index.render("Unable to resolve host."));
}
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);
}
}
我不知道这样做 it.I 的好方法是否已经用 request().uri()
尝试过,但没有用 request().host()
尝试过,并且对 me.Maybe 有用,这可能会有所帮助。