我无法解决改写规则,请协助寻找失踪的和平。

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

来源网址为:
    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

目标网址是:
     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。

最佳答案

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

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

10-06 06:04