如何在Tomcat 9的rewrite.config文件中为多个角度项目添加多个重写规则

Posted

技术标签:

【中文标题】如何在Tomcat 9的rewrite.config文件中为多个角度项目添加多个重写规则【英文标题】:How to add multiple rewrite rules for multiple angular projects in the rewrite.config file in Tomcat 9 【发布时间】:2021-01-06 04:34:30 【问题描述】:

以下是我面临的问题,需要一些帮助。

最初的问题:

我有一个 tomcat 服务器,我在其中部署了三个 angular 项目(在 web 应用程序文件夹内)。 当我启动 Tomcat 服务器时,会出现 Angular 应用程序。一旦我登录到应用程序并浏览页面,然后尝试刷新角度应用程序内的任何页面,它就会给我一个 404 错误。

初始问题的解决方案:

我得到了解决上述问题的解决方案,如下所示:

    将以下参数添加到 Tomcat 配置文件夹内的“server.xml”文件中。 范围:-

    我在 /config/Catalina/localhost/ 文件夹中创建了一个 rewrite.config 文件,并为所有 3 个 Angular 应用程序编写了重写规则。

新问题:

只有一个 Angular 应用程序正在启动,但所有其他应用程序的 index.html 页面都没有加载,并且在日志中我可以看到 304 错误。

问题:有人可以建议如何在同一个 tomcat rewrite.config 文件中为不同的 Angular 项目编写多个重写配置。

更多详细信息:Angular 应用程序位于以下位置:

Tomcat 路径/webapps/app1 Tomcat路径/webapps/app2 Tomcat路径/webapps/app3

rewrite.config 文件内容:

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app1/(.*) /app1/index.html

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app2/(.*) /app2/index.html

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app3/(.*) /app3/index.html

只有 app1 正在加载,但 app2 和 app3 index.html 页面未加载,并且 tomcat 日志中 app2 和 app3 的日志为 304。

请建议如何为多个角度应用程序编写重写规则。

【问题讨论】:

【参考方案1】:

您确定只是第一个而不是只是第三个在您的情况下正确投放吗?因为我认为您缺少 RewriteRule 标志 [L] ...最后一条规则:

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app1/(.*) /app1/index.html [L]

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app2/(.*) /app2/index.html [L]

RewriteCond %REQUEST_PATH !-f
RewriteRule ^/app3/(.*) /app3/index.html [L]

【讨论】:

以上是关于如何在Tomcat 9的rewrite.config文件中为多个角度项目添加多个重写规则的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 3 中运行嵌入式 Tomcat 9 以进行集成测试?

如何使用 Tomcat 9 在 servlet req.getRemoteAddr() 中获取 ipv4 [关闭]

如何在Tomcat 9的rewrite.config文件中为多个角度项目添加多个重写规则

如何在 Tomcat 9.0.0M10 中修复“已扫描但未在其中找到 TLD 的 JAR”

Tomcat 9/Eclipse 2020-12:HTTP 状态 404

Tomcat 8/9 基于APR库的高并发性能优化