0

我正在使用播放框架 2.3 版本并提供静态 html(不使用播放模板引擎)。

#将/public文件夹中的静态资源映射到/assets URL路径 GET /assets/*file controllers.Assets.at(path="/public", file)

当用户尝试访问错误的 url 时,我想提供 404 页面

例如,我在公共资产文件夹中有 2 个 html。
public/html/a.html
public/html/b.html
public/error/404.html

URL:localhost/assets/html/a.html -> 200 OK
URL:localhost/assets/html/b.html -> 200 OK
URL:localhost/assets/html/c.html -> 404 NOT FOUND PAGE 所以我会喜欢提供这个页面(URL:localhost/assets/error/404.html)

我已经尝试使用 Global.onHandlerNotFound 和 Global.onBadRequest 但这在静态资源的情况下不起作用。

请帮我。谢谢你。

4

1 回答 1

0

首先,将 404 错误的静态 html 放在public/文件夹中,例如 (public/error404.html)

然后,在 onHandlerNotFound 方法中,Play 文档告诉它应该被调用

如果框架没有找到一个请求的动作,onHandlerNotFound 操作将被调用

您将返回该页面。所以,你可以这样退货

return Results.redirect(routes.Assets.at("error404.html"));

我想我误解了你的问题。

请注意,此方法应该处理未找到的操作。如果您想处理未找到的资产,那么我认为您必须修改内置的资产控制器,一旦有,处理资产响应的动作,即 Assets.at 动作。如果没有资产,我可能只是调用 Results.notFound()。它不调用任何全局方法,因此您可以处理错误,这就是重点。

于 2014-12-11T12:19:27.037 回答