首页 > 解决方案 > Tomcat Rewrite Valve 正在 clientapp 中创建一个循环

问题描述

我有一个在 tomcat 中运行历史模式的 Vue SPA。为了解决 404 路由问题,我已将此代码添加到 tomcat 中的 ~/conf/server.xml 文件中:

 ...
    <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

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

 ...
    </Host>
 ... 

我已将此代码添加到我的 ~/Catalina/localhost/rewrite.config 文件中:(顺便说一句,我在不同的容器中有 6 个 api,我认为它们可能是造成问题的原因?)

 RewriteRule ^/api1/ - [L,NC]
 RewriteRule ^/api2/ - [L,NC]
 RewriteRule ^/api3/ - [L,NC]
 RewriteRule ^/api4/ - [L,NC]
 RewriteRule ^/api5/ - [L,NC]
 RewriteRule ^/api6/ - [L,NC]
 RewriteCond %{REQUEST_PATH} !-f
 RewriteRule ^/(.*) /index.html

我已经重新启动了我的服务器,但我的数组中仍然出现了一个无限循环,这些循环是从我的 api 填充的。如果我删除 rewrite.config,则问题不存在。但后来我再次收到 404 错误。有什么想法吗?

标签: vue.jstomcaturl-rewritingbrowser-historyserver-configuration

解决方案


通过在 rewrite.config 文件中更改为此代码解决了此问题。

   RewriteRule ^/myapi1/.* - [L,NC]
   RewriteRule ^/myapi2/.* - [L,NC]
   RewriteRule ^/myapi3/.* - [L,NC]
   RewriteRule ^/myapi4/.* - [L,NC]
   RewriteRule ^/myapi5/.* - [L,NC]
   RewriteRule ^/host-manager/.* - [L,NC]
   RewriteRule ^/manager/.* - [L,NC]
   RewriteCond %{REQUEST_PATH} !-f
   RewriteRule ^/(.*) /index.html

推荐阅读