通配符在Play 2中路由到静态文件

时间:2014-08-18 23:37:56

标签: playframework-2.0 url-routing single-page-application

我正在开发一个Play Framework 2.2应用程序,它同时提供JSON api和单页面应用程序。对于单页面应用程序,我使用的是Backbone.js,我想支持HTML5 History api。

目前,Play通过index.html文件为单页应用提供服务,单页应用中的所有路由都使用基于散列的路由完成。以下是我正在使用的路线:

GET   /app/*file   controllers.Assets.at(path="/public/app/src", file)

由单页应用处理的示例网址为:

/app/index.html#/some/url

我希望能够将以/app/开头的所有网址路由到我的index.html文件,以便上述网址成为以下网址,并且仍会由我的index.html文件:

/app/some/url

我的想法是使用如下路线:

GET   /app/*anything   controllers.Assets.at(path="/public/app/src", file="index.html")

然而,Play并不满意我没有使用"任何东西"路由,所以我得到以下编译错误:呼叫定义中缺少参数:任何

Play 2中是否有任何方法可以使用#34;通配符"如上所述路由到单个静态文件

1 个答案:

答案 0 :(得分:3)

这是Play的限制,但是很容易解决。定义委派给资产控制器的操作并接受它忽略的参数:

def index(path: String) = controllers.Assets.at(path="/public/app/src", file="index.html")

然后指明你的路线。