Is it possible to simulate this rewrite in vcl?

Nils Goroll slink at
Thu Mar 25 14:36:06 CET 2010

Regarding this old thread:

>> I've had to put an instance of apache behind varnish as a redirector as I
>> can't think of a way of making varnish do it. Can this apache rewrite be
>> done in vcl?
>> RewriteRule  ^/(.*)/home/(.*)$  http://$$2 [P]
> Not right of the bat.
> Provided you add backend instances for all the servers serving
> these domains it is possible, but you need to do the $1 part as
> a if/elseif/elseif/elseif/.../else to set the req.backend.

Something I have just published recently might help:

I haven't tested Rob's specific case, but something like the following *SHOULD*
work (don't pick on syntax errors please):

if (req.url ~ "(.*)/home/(.*)") {
	set req.url = pmatch.2;
	if (pmatch.1 == "server1") {
		set req.backend = "server1";
	} elseif (pmatch.1 == "server2") {
	} else {
		error 543 "wrong server"

Please report bugs of the pmatch feature if you find any.

Cheers, Nils

More information about the varnish-misc mailing list