我无法解决改写规则,请协助寻找失踪的和平。
正则表达式似乎很好,因为我在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