我在 Tomcat 中提供了一个 Spring MVC 应用程序。当用户进入未找到的页面时,它会显示我的默认 404 页面,如 web.xml 中设置的那样
<error-page>
<error-code>404</error-code>
<location>/errors/404/</location>
</error-page>
问题是如果用户去 http://mydomain/bad/url
它被重定向到 http://mydomain/errors/404/
这很烦人,因为如果用户输入了错误的 URL,就很难看出错误所在并进行更正。
出现 404 错误后,我希望它保留原始 URL,但显示错误页面。 (即转发,而不是重定向)。这就是我对大多数 Web 服务器工作方式的印象。这可能吗?
最佳答案
我不太明白为什么会这样,但是...
我发现,如果您设置了状态代码并且响应为空(或者如果您尝试转发到错误页面),Tomcat 将重定向到错误页面:
((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);
但如果您要求 Tomcat 发送页面,它只会转发并保留原始状态的 URL,正如我正在寻找的那样。
((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);
((HttpServletResponse) response).sendError(HttpServletResponse.SC_NOT_FOUND);
关于tomcat - 如何使自定义 404 页面成为转发,而不是 Tomcat 中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963755/