首页 文章

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

提问于
浏览
0

我正在尝试使用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 回答

  • 0

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

    RewriteCond% ^ wh%3D( . *)$ [NC]

    然后它奏效了 .

    吉姆

相关问题