我正在尝试使用mod_rewrite RewriteRule,在我的RewriteRule中,我试图匹配一个具有如下查询字符串的URL:
HTTP:///myfakeoam/obrareq.cgi ....?
我的RewriteRule看起来像:
RewriteEngine On
RewriteCond% ^ 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&る= YYYY&....
但是,在我的实际系统中,请求是由另一个应用程序创建的,它似乎是URL编码(实际上是URL编码两次)查询字符串(例如,替换等于“%3D”等),即:
HTTP:///myfakeoam/obrareq.cgi WH%3Dxxx ....
如果查询字符串部分是URL编码的,那么我的RewriteRule中的模式匹配不会失败...
有没有办法处理这种情况?
谢谢,吉姆
1 回答
回答我自己的问题,我刚刚意识到RewriteCond正在为查询字符串进行正则表达式匹配,所以我将其更改为:
RewriteCond% ^ wh%3D( . *)$ [NC]
然后它奏效了 .
吉姆