Tomcat 阀重写不工作

Tomcat valve rewrite not working

我想将静态资源(例如 js、图像等)以外的任何 link 定向到我的 index.html。我做了以下更改。

我在 app.war/META-INF 目录中添加了一个 context.xml,其中包含:

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

我在 app.war/WEB-INF 目录中也有 rewrite.config,其中包含:

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$
RewriteRule ^.*$ - [L] 
RewriteRule ^.*$ /index.html [L,QSA]

但是,通过上述设置,我的所有 js 和 css 文件都会显示 index.html 内容(在浏览器控制台中)。你能建议这里的问题是什么吗?

您的最终规则将所有内容重写为 /index.html:

RewriteRule ^.*$ /index.html [L,QSA]

如果您认为上述规则将首先匹配,那么您是对的,除了对文件的请求,例如/styles.css 与您对静态工件的表达式不匹配:

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$

问题是您要求请求 URI 的 css 部分后面至少有一个字符。对 /css/style.css 的请求应该有效。