我正在尝试让Play2与AngularJS玩得很好。 Play2将不知道AngularJS,因为我使用Yeoman作为前端开发。
我想要解决的唯一部分是在用户刷新HTML5MODE时重写网址。我在最后一行的路线文件中有
GET /*path controllers.Default.redirect(to = s"#!/$path")
然而,这不起作用。首先,似乎在路径文件中,不允许使用字符串插值,因为$ path无法解析。此外,在字符串中使用#也会产生错误,因为#是评论的开始。
我可以为这条路线创建一个控制器动作,只是为了附加"#!"到这样的道路:
GET /*path controllers.Application.redirect(path: String)
/* in Application controller */
def redirect(path: String) = Action {
Redirect(s"#!/$path")
}
但我更喜欢在路由文件中保持清晰,就像在Ruby on Rails中一样,我可以做到
get '/*path' => redirect("/#!/%{path}")
你能与我分享你的技巧和最佳实践吗?
由于
答案 0 :(得分:0)
你最好在Apache或Nginx中进行这种重写 - 网络服务器的URL重写功能比Play更强大。有关如何在Play前设置Web服务器,请参阅the Play documentation,然后查看Web服务器的文档,了解如何设置所需的重写。