我正在开发一个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;通配符"如上所述路由到单个静态文件?
答案 0 :(得分:3)
这是Play的限制,但是很容易解决。定义委派给资产控制器的操作并接受它忽略的参数:
def index(path: String) = controllers.Assets.at(path="/public/app/src", file="index.html")
然后指明你的路线。