首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Tomcat重写规则Angular 5的应用?

Tomcat重写规则Angular 5的应用?
EN

Stack Overflow用户
提问于 2018-07-30 23:34:05
回答 2查看 1.2K关注 0票数 2

我在Angular 5中开发了一个包含Routing的应用程序,并用ng build --base-href /myApp/ --prod构建了它。现在,我想将其部署到笔记本电脑上本地运行的tomcat服务器上。

问题是,每当我在浏览器中重新加载应用程序的页面时,我都会收到以下错误:

404请求的资源不可用

我在互联网上搜索过解决策略,但没有找到对我有帮助的。我非常确定我必须声明一些Rewrite rules,但我不知道它们应该是什么样子,以及我必须在哪里声明它们。

有人知道如何解决这个问题吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-09-23 16:32:22

如果没有服务器上的重定向规则,应用程序深度链接将不起作用。所有深层链接都必须由服务器重定向到应用程序index.html

将tomcat设置为重定向所有深度链接-

在rewrite.config中配置重写规则server.xml

  • Write
  1. RewriteValve

1.在server.xml中配置RewriteValve

编辑~/conf/server.xml以在主机部分内添加以下阀门,如下所示-

代码语言:javascript
复制
...
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

...
      </Host>
...

2.在rewrite.config中编写重写规则

创建目录结构- ~/conf/Catalina/localhost/,并在其中创建包含以下内容的rewrite.config文件。注意-在这里,我将/myApp作为应用程序的上下文路径。

代码语言:javascript
复制
RewriteCond %{REQUEST_PATH} !-f
RewriteRule ^/myApp/(.*) /myApp/index.html

设置完成后,重新启动tomcat服务器,您就可以访问应用程序的深层链接,这些链接将路由到angular应用程序内部的正确组件。

有关更多详细信息,请参阅this post

票数 1
EN

Stack Overflow用户

发布于 2018-09-03 07:55:29

也许您需要WEB-INF目录中的web.xml条目来将所有未知URL重定向到您的默认index.html

代码语言:javascript
复制
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>My Angular Application</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>
    <error-page>
        <error-code>410</error-code>
        <location>/index.html</location>
    </error-page>
</web-app>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51597504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档