我正在使用play framework 2.3版本并提供静态html(不使用播放模板引擎)。
#Map从/ public文件夹到/ assets URL路径的静态资源 GET / assets / *文件controllers.Assets.at(path =“/ public”,file)
我想在用户尝试访问错误网址时提供404页面
例如我在公共资产文件夹中有2个html
公共/ HTML / a.html
公共/ HTML / b.html
公共/错误/ 404.html
网址:localhost / assets / html / a.html - > 200 OK
网址:localhost / assets / html / b.html - > 200 OK
网址:localhost / assets / html / c.html - > 404 NOT FOUND PAGE所以我想提供这个页面(URL:localhost / assets / error / 404.html)
我已经尝试使用Global.onHandlerNotFound和Global.onBadRequest但是这不适用于静态资源。
请帮帮我。谢谢。
答案 0 :(得分:0)
首先,在 public / 文件夹中输入您的静态html 404错误,例如(public / error404.html)
然后,在onHandlerNotFound方法中,Play docs告诉它应该被称为
如果框架没有为请求找到Action,那么 将调用onHandlerNotFound操作
您将返回该页面。所以,你可以这样回归
return Results.redirect(routes.Assets.at("error404.html"));
我想我误解了你的问题。
请注意,此方法应该处理未找到的Actions。如果你想处理未找到的资产,那么我认为你必须修改内置的Assets控制器,一旦它存在,处理资产响应的动作,Assets.at动作。如果没有资产,可能只调用Results.notFound()。它没有调用任何全局方法,所以你可以处理错误,这就是重点。