刷新 浏览器 Angular 应用程序不工作。将应用程序部署到 apache tomcat 时出现 404 错误

Ani*_*had 2 tomcat production-environment angular angular6

我试图找出如何设置 Apache Tomcat 服务器以在页面刷新时为 Angular 应用程序提供服务的方法。

路由仅在我单击时才起作用,但如果手动输入路径或者如果我进行页面刷新,则会出现 404 错误。

HTTP 状态 404 – 未找到

1)构建角度应用程序:

ng build --prod --base-href ./
Run Code Online (Sandbox Code Playgroud)

2)我还在apache tomcat中添加了重写规则

在 $ApacheLocation/conf/context.xml 中

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
Run Code Online (Sandbox Code Playgroud)

在 $ApacheLocation/conf/server.xml

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用。

我将不胜感激任何帮助。

Ani*_*had 5

我得到了我的问题的解决方案,我解决了这个问题。

这是我如何解决问题的步骤。

1)在我的angular src文件夹中创建了“WEB-INF/web.xml”,路径如下

Your_Folder/src/WEB-INF/web.xml
Run Code Online (Sandbox Code Playgroud)

2)在web.xml我添加了以下几行,

<web-app> 
    <error-page> 
        <error-code>404</error-code> 
        <location>/index.html</location> 
    </error-page> 
</web-app>
Run Code Online (Sandbox Code Playgroud)

3)angular.json在构建应用程序时将外部文件夹添加到so can中,它将在dist文件夹中可用,

在 angular.json 中

"assets": [ "src/assets","src/favicon.ico","src/WEB-INF" ]
Run Code Online (Sandbox Code Playgroud)

4)使用以下命令构建应用程序,

ng build --prod --base-href=/myApp/
Run Code Online (Sandbox Code Playgroud)

5)distbase-href名称重命名文件夹

6)复制distbase-href文件夹并粘贴到

apache-tomcat-8.5.37/webapps
Run Code Online (Sandbox Code Playgroud)

7) 启动 tomcat,即使刷新浏览器,您的应用程序也会运行。