我正在尝试让 Play2 能够与 AngularJS 很好地配合。 Play2 将不了解 AngularJS,因为我使用 Yeoman 进行前端开发。
我唯一想要了解的部分是重写 url,以防用户在 HTML5MODE 中刷新。我的路线文件的最后一行有
GET /*path controllers.Default.redirect(to = s"#!/$path")
但是,这不起作用。首先,在路由文件中,似乎不允许使用字符串插值,因为 $path 无法解析。此外,在字符串中使用#也会出错,因为#是注释的开始。
我可以为此路线创建一个 Controller 操作,只需附加“#!”到这样的路径:
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}")
您能与我分享您的技巧和最佳实践吗?
谢谢
最佳答案
您最好在 Apache 或 Nginx 中进行此重写 - Web 服务器的 URL 重写功能比 Play 的强大得多。请参阅the Play documentation了解如何在 Play 前面设置 Web 服务器,然后查看 Web 服务器的文档以了解如何设置您想要的重写。
关于angularjs - AngularJS 的 Play2 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279401/