regex matches on url escape chars

Colin Nicholson colin.nicholson at netintelligence.com
Fri Feb 26 18:24:53 CET 2010


Hi,

I have a web service which checks URLs sent to it by our software and
looks up a categorisation for that url (product is a web filter).

The request is of the form

/checkurl/http%3A%2F%2Fwww%2Efacebook%2Ecom%3A80%2Fx%2F2613988206%2Ffalse%2Fp%5F1327924941%3D2

which is checking
http://www.facebook.com:80/x/2613988206/false/p_1327924941=2.


I would like to rewrite the request, in this case, to be just
/checkurl/facebook%2Ecom, but I can't get the % escape codes to match
anything.

If the escape codes weren't in use, the following code works fine:

if (req.url ~ "facebook\.com") {
        set req.url = "/checkurl/facebook.com";
}

but

if (req.url ~ "facebook\%2Ecom") {
        set req.url = "/checkurl/facebook%2Ecom";
}

does not work. I've tried escaping the %2E with a backslash, but still
nothing. It isn't practical to change our software to not use the escape
codes unfortunately.


Does anyone have any ideas?


Thanks,
Colin





More information about the varnish-misc mailing list