1

我的 Play 框架应用程序最近开发了一个相当讨厌的重定向循环,但仅在一个特定页面(“关于”页面)上。没有其他页面有这个问题,“关于”页面的代码与所有其他页面完全相同,并且不会一直发生。

我最近唯一改变的是 (1) 更新了 Play 框架和 (2) 安装了一个过滤器,以便在onRequest调用时,如果 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中执行此操作的示例吗?遇到这些问题后,我想我宁愿在客户端这样做,即使它会稍微影响重定向时间。

4

1 回答 1

0

好的,因此删除上面提到的过滤器显然确实有效。为了安全起见,我还注释掉了其他“关于”路线。看起来重定向过滤器效果很好,但是当routes.conf文件中有多个级别的资源时,它可能会导致冲突。例如,“/about/us/home”等。

不确定这是否是 Play 中的错误,但目前,在 Javascript 中进行重定向可以解决我的问题。

于 2013-09-20T16:26:23.687 回答