2012-03-31 79 views
0

我试图使用mod_rewrite重写规则,并在我的重写规则,我想匹配在查询字符串,看起来网址,如:mod_rewrite的重写规则模式匹配失败URL编码

HTTP:/ ?//myfakeoam/obrareq.cgi ....

我重写规则是这样的:

RewriteEngine叙述在

的RewriteCond%{QUERY_STRING}^WH = $ [NC]

(*)。

重写规则^/myfakeoam/obrareq.cgi $ http://apache1.whatever.com/formbasicprotected/index.html [CO = WH:%1:.whatever.com:1440:/]

当我手动测试,通过手动键入的URL到浏览器,即重写规则似乎要能够匹配的请求如果请求的样子:

HTTP:///myfakeoam/obrareq.cgi WH = XXX & RU = YYYY & ....

,但是,在我的实际系统中,该请求是由另一个应用程序创建的,并且它似乎是查询字符串的URL编码(实际上是URL编码的两倍)(例如,用“%3D”等替换等于),即:

HTTP:///myfakeoam/obrareq.cgi WH%3Dxxx ....

如果查询字符串部分是URL编码一样,在我的重写规则的模式匹配没有失败......

有什么办法可以处理这种情况?

感谢, 吉姆

+0

我想,之所以其他应用程序是双URL编码的查询字符串的,因为这样的事情(http://blog.perplexedlabs.com/2008/03/20/mod_rewrite- URLEncode的-和特殊字符/)?但是,那么我可以制作一个RewriteRule来处理这个传入的请求吗?吉姆 – user555303 2012-03-31 01:01:53

回答

0

回答我的问题,我刚刚意识到的RewriteCond只是在做的查询字符串正则表达式匹配,所以我改变了到:

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

然后它工作。

吉姆