您好我正在尝试为应用引擎上的404未找到错误设置静态错误页面。
根据https://developers.google.com/appengine/docs/java/config/webxml#Error_Handlers:它说404无法自定义。
根据:https://developers.google.com/appengine/docs/java/config/appconfig#Custom_Error_Responses它似乎也不支持404。
然而,https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/3C-pY5ta2HQ,似乎建议可以自定义404错误页面。我现在很困惑。
答案 0 :(得分:10)
我意识到在本地开发服务器上运行应用程序时会发生此问题。但是,当我将应用程序部署到应用程序引擎时。我可以看到使用web.xml配置的404错误页面。谢谢你的帮助。
答案 1 :(得分:5)
为什么不使用Java EE< error-page>为这些目的进入?
在你的web.xml中:
<error-page>
<error-code>404</error-code>
<location>/app/error/404</location>
</error-page>
....
<error-page>
<error-code>500</error-code>
<location>/app/error/500</location>
</error-page>
您可以将它与Spring结合使用,并获得一般错误控制器,如:
....
@Controller
public class ErrorController {
@RequestMapping(value = "/error/{errorCode}")
public final String errorCode(
@PathVariable("errorCode") final String errorCode,
final ModelMap modelMap) {
modelMap.put("statusCode", errorCode);
return "redirect:/ui/error.htm";
}
和你的jsp文件:
<h2>Error!!!</h2>
....
<h3>Status code: #{param.statusCode}</h3>
希望这有帮助。
答案 2 :(得分:1)
您是对的,这在App Engine上的Java目前不可用。但是,Python有一种解决方法。有关此示例,您可以查看GAE Boilerplate。
希望这有帮助。
答案 3 :(得分:1)
我已经能够在我的本地开发服务器上成功地在App Engine SDK版本1.6.1和更早版本中重定向404错误。但是,在更新到GAE SDK 1.7.5后,我无法让它在本地工作。我已经读过,如上所述,它目前不支持404。
答案 4 :(得分:1)
摘自Google App Engine标准环境文档(2018年8月19日):
简而言之,您必须对此URL具有servlet映射,如下所示:
<web-app>
<servlet>
<servlet-name>404</servlet-name>
<jsp-file>/404.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>404</servlet-name>
<url-pattern>/404</url-pattern>
</servlet-mapping>
...
<error-page>
<error-code>404</error-code>
<location>/404</location>
</error-page>
</web-app>
此配置按预期工作。尝试获取不存在的页面时显示错误页面(例如www.domain.com/unknownPage)。
答案 5 :(得分:0)
在应用引擎版本1.9.48,这是在云上工作:
[web.xml]
<web-app>
...
<error-page>
<error-code>404</error-code>
<location>/static-error.html</location>
</error-page>
</web-app>
答案 6 :(得分:0)