我正在尝试使用mod_rewrite RewriteRule,在我的RewriteRule中,我正在尝试匹配具有查询字符串的URL:
HTTP:///myfakeoam/obrareq.cgi ....
我的RewriteRule看起来像:
RewriteEngine On
RewriteCond%{QUERY_STRING} ^ wh =(。*)$ [NC]
RewriteRule ^ / myfakeoam / obrareq.cgi $ http://apache1.whatever.com/formbasicprotected/index.html [CO = wh:%1:.whatever.com:1440:/]
当我手动测试时,通过在浏览器中手动输入URL,如果请求如下所示,RewriteRule似乎能够匹配请求:
HTTP:///myfakeoam/obrareq.cgi WH = XXX&安培; RU = YYYY&安培; ....
但是,在我的实际系统中,请求是由其他应用程序创建的,并且它似乎是URL编码(实际上是URL编码两次)查询字符串(例如,替换等于“%3D”等。 ),即:
HTTP:///myfakeoam/obrareq.cgi WH%3Dxxx ....
如果查询字符串部分是URL编码的,那么我的RewriteRule中的模式匹配没有失败......
有没有办法处理这种情况?
谢谢, 吉姆
答案 0 :(得分:0)
回答我自己的问题,我刚刚意识到RewriteCond正在为查询字符串进行正则表达式匹配,所以我将其更改为:
RewriteCond%{QUERY_STRING} ^ wh%3D(。*)$ [NC]
然后它奏效了。
吉姆