【问题标题】:Play Framework 2.1.2 Redirect LoopPlay Framework 2.1.2 重定向循环
【发布时间】:2013-09-21 00:26:23
【问题描述】:

我的 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 中执行此操作的示例吗?在遇到这些问题后,我想我宁愿在客户端这样做,即使它会稍微影响重定向时间。

【问题讨论】:

  • 你能分享你的路由文件和相关控制器的代码吗?
  • 更新为显示路由和控制器。谢谢。
  • 在哪个控制器的方法中有重定向?
  • 这确实很奇怪。如果我是你,我会删除过滤器(你做了),清理并重新编译。要使用 javascript 重定向,您可以使用 window.location = 'http://www.google.com';
  • 谢谢。我删除了过滤器并屏蔽了上面提到的其他“关于”路由。到目前为止,还没有重定向循环。奇怪的是我不确定问题出在哪里,但从现在开始我只会在 javascript 中进行重定向。谢谢。

标签: playframework playframework-2.0 playframework-2.1


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多