如何在 apache tomcat 9 中配置回退 url

How to configure fallback url in apache tomcat 9

我正在尝试部署 angular 8 应用程序在 apache 中路由 tomcat 9.

我已经使用 ng build --prod --base-href=/ng-app/ 构建可分发文件。

我将 ng-app 文件夹放在 tomcats 的 webapps 文件夹中。它正确地呈现 localhost:8080/ng-app 但每当我尝试访问 localhost:8080/ng-app/users 它给我 404.

我从 here 了解到,我需要在应用程序服务器中为 angular 配置回退,以便它重定向到 index.html 如果 ng-app/ 下的任何东西是未找到。

我遇到了 apache http 服务器、ngnix 等的配置。但是我找不到与 apache 相同的配置 tomcat 9.

找到解决方案

首先,我必须在 HOST

下的行下方添加(而不是替换)
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

我认为上面的配置是为了 tomcat 读取我将在下面提到的重写配置 -

并在 /conf/Catalina/localhost/ 目录中创建文件 rewrite.config 并添加以下规则 -

RewriteCond %{REQUEST_PATH} !-f
RewriteRule ^/ng-app/(.*) /ng-app/index.html

如果找不到 /ng-app/ 下的任何内容,此规则基本上会重定向到 /ng-app/index.html。 现在一切正常。