我的Play框架应用程序最近开发了一个相当讨厌的重定向循环,但只在一个特定的页面上(“about”页面)。没有其他页面存在此问题,“关于”页面的代码与所有其他页面的代码完全相同,并且它不会一直发生。
我最近唯一改变的是(1)更新了Play框架和(2)安装了一个过滤器,以便在调用onRequest
时,如果URL是旧站点URL,它将重定向到新的URL 。我删除了这个过滤器,但在一段时间后仍然存在重定向循环。
此重定向循环并非始终发生,而且似乎只在网站生效几天后才会发生。重新启动Play服务器至少会修复重定向循环。
路由文件条目:
GET /about controllers.Application.about()
现在,我在路线中还有其他几个“约”条目,如下所示:
GET /about/clients controllers.About.clients()
GET /about/history controllers.About.history()
GET /about/leadership controllers.About.leadership()
GET /about/philosophy controllers.About.philosophy()
控制器方法:
@Cached(key="aboutPage", duration = CACHE_DURATION)
public static Result about(){
return ok(about.render("About"));
}
任何人都知道为什么会发生这种情况或任何经历过类似情况的人?
另外,有人可以提供一个如何在javascript中执行此操作的示例吗?在遇到这些问题之后,我想我宁愿在客户端这样做,即使它会稍微影响重定向时间。
答案 0 :(得分:0)
好的,所以删除上面引用的过滤器确实很有效。为了安全起见,我也注意到了另一个"关于"路线。似乎重定向过滤器运行良好,但当routes.conf
文件中存在多个级别的资源时,它可能会导致冲突。例如," / about / us / home"等等
不确定这是否是Play中的错误,但是,目前,在Javascript中进行重定向可以解决我的问题。