我的Tomcat重写规则不起作用,我也不知道为什么

时间:2018-12-19 17:24:25

标签: tomcat url-rewriting rules

我无法解决重写规则,请帮助找到失踪的和平。

正则表达式似乎很好,因为我在Notepad ++中测试了替换。

源URL为:     http://qf.myserver.com:8080/archive?get&pVersion=0045&contRep=T1&docId=F40343A990B01ED8BAF97A695626C259&ixUser=QFNCOTAAP001&ixAppl=libdsh&accessMode=r&authId=QFNCOTAAP001&expiration=20181219153855&secKey=MIIBXAYJKoZIhvcNAQcCo

目标URL为:      http://qf.myserver.com:8080/archive?get&pVersion=0045&contRep=T1&docId=F40343A990B01ED8BAF97A695626C259&ixUser=QFNCOTAAP001&ixAppl=libdsh&accessMode=r&authId=QFNCOTAAP001

RewriteCond应该检查包含“ archive?get”和“&contRep = T1”的链接,并从URL中向后和在&expiration之后删除所有内容。

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

in \WEB-INF\rewrite.config and \conf\Catalina\localhost\rewrite.config:

RewriteCond     %{REQUEST_URI}      (archive\?get.*)(\&contRep=T1.*)
RewriteRule     ^(.*).expiration.*      $1

它不会替换URL,Tomcat仍会执行源URL。

1 个答案:

答案 0 :(得分:1)

问题出在RewriteCond中,因为我要过滤的内容在%{REQUEST_URI}中不可用。现在我有

RewriteCond     %{QUERY_STRING} ^(get.*&contRep=T1&.*)&expiration.*$
RewriteRule     ^(.*)$  $1?%1