当查询字符串是URL编码时,mod_rewrite RewriteRule模式匹配失败

时间:2012-03-31 00:54:15

标签: mod-rewrite

我正在尝试使用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中的模式匹配没有失败......

有没有办法处理这种情况?

谢谢, 吉姆

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,我刚刚意识到RewriteCond正在为查询字符串进行正则表达式匹配,所以我将其更改为:

RewriteCond%{QUERY_STRING} ^ wh%3D(。*)$ [NC]

然后它奏效了。

吉姆