我们正在将一个接缝应用程序(2个应用程序)移植到一个播放应用程序以立即测试播放(好吧,移植更难的场景......到目前为止,非常好)。
我们希望能够在主机名上路由根目录。对于 http://alvazan.com/我们想要转到我们的home.html页面,但是
http://*.premonitionx.com/我们想要路由到仪表板(如果没有登录则会重定向到登录页面。)
最后,我们想要路线 http://premonitionx.com/重定向到alvazan.com网页。
此外,我们会喜欢
之类的路线的http:// {公司} .premonitionx.com / {项目} / {释放}
甚至可以在playframework中使用????在开发模式下,我们现在有这些网址用于开发接缝以便使用
http:// {company} .dev.premonitionx.com,以便我们可以在我们的本地机器上进行测试,并测试不同的公司等等。(如您所知,许多测试无法通过测试永远是localhost)
感谢, 迪安
答案 0 :(得分:10)
有些文档更难找到玩法:)我在任何真实的文档中都找不到这个但是记得它是发布的一部分......
http://www.playframework.org/documentation/1.1/releasenotes-1.1#routeHost
路线虚拟托管
routes文件现在支持主机匹配。如果必须从host参数中提取操作参数,这可能很有用。例如,对于SAAS应用程序,您可以使用:
GET {client}.mysoftware.com/ Application.index
然后自动检索客户端值,与任何其他请求参数一样:
public static void index(String client) {
...
}
答案 1 :(得分:0)
我认为通过routes
文件进行的虚拟托管已在播放版本2.x中出现, 不再可用。
但是您可以做的是准备一个控制器来代理此类请求。这是我在运行2.8.x时工作的示例代码:
@Singleton
class VirtualHostsController @Inject() (
langs: Langs,
ccs: ControllerComponents
) extends AbstractController(ccs) with I18nSupport {
private val logger = Logger(classOf[VirtualHostsController])
def index() = Action { implicit request =>
logger.info(s"Handling Virtual Hosts for ${request.host}")
request.host match {
case "localhost:9000" => Redirect(routes.SomeController.show())
case "sub.domain.tld" => Redirect(routes.OtherController.show())
case _ => InternalServerError("unknown domain")
}
}
}
在routes
文件中,您可以编写如下内容:
GET / controllers.VirtualHostsController.index()