Tomcat阀门重写不起作用

时间:2017-01-05 20:25:41

标签: tomcat mod-rewrite tomcat-valve

我想将除静态资源(例如js,图像等)之外的任何链接指向我的index.html。我做了以下更改。

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您的最终规则会将所有内容重新写入/index.html

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

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

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

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