【发布时间】:2019-03-22 20:45:31
【问题描述】:
任何人都可以提供有关如何配置 Tomcat 以完全避免 404 的建议,而是在未找到页面时(特别是在应触发 404 的情况下)返回 index.html 内容和 200 作为状态? 让我告诉你我为什么要这样做:
我们有 Angular 应用程序“www.app.exmpl/app”,当用户点击“www.app.exmpl/app”应用程序时,应用程序正确显示并返回 200。返回的 index.html 包含 Angular 应用程序代码。
-
当用户点击“www.app.exmpl/app/some_unexisted_url_in_file_system_path”时,tomcat 会尝试查找可以提供此 url 的端点或 html 文件,并返回 404,在 web.xml 中我们有以下配置:
<error-page> <error-code>404</error-code> <location>/index.html</location> </error-page>
这会导致用户收到 404 响应,但仍然会加载 Web 应用程序 正确,因为 index.html 在其中和加载页面后有角度应用程序 将 url 重写为正确的 URL,例如:“www.app.exmpl/app”。
- 当用户点击“www.app.exmpl/app/url_handled_by_angular_app”时,仍然没有找到“url_handled_by_angular_app”下的页面OR端点,因此tomcat将代码设置为404并呈现index.html,返回给用户,并且在用户的电脑上,此响应呈现为 Angular 应用程序而无需重写 url,因为 Angular 应用程序知道如何处理此“url_handled_by_angular_app”路由。
所以总而言之,我只需要摆脱 404 并将它们全部替换为 200 并在这种情况下呈现 index.html 内容。这种情况的最佳做法是什么?
【问题讨论】:
标签: angular tomcat http-status-code-404