2010-08-23 41 views
2

我有一个比较简单的(我认为)用例,但我找不到在哪里有人做任何的例子。我们在两个不同的应用程序之前使用Varnish作为缓存和反向代理,并希望在两者之间做出更统一的事情,因为它们都做类似的事情。我希望Varnish可以帮助重写URL,如下所示。对于分页我可以重新格式化我的URL参数清漆

原始应用程序URL(获得第10项):

http://myapplication.com/products/?startindex=1&endindex=10 

所需的URL:

http://myapplication.com/products/?paginate=1:10 

这只是一个例子(最复杂的,因为它结合了两个参数),但在所有情况下,参数的输入值保持不变,只是参数名称会改变。

另一个例子是:

http://myapplication.com/search/?query=something 

到:

http://myapplication.com/search/?q=something 

有没有人有任何清漆的经验和如何可以这样做?

谢谢

回答

5

显然你可以。答案是regsub是你的朋友。

例如:

if (req.url ~ "(.*)(id=)") { 
     set req.url = regsub(req.url, "(feeds/[a-zA-Z]*/)(.*)([\?|&])(id=)([a-zA-Z0-9]*)(.*)", "\1\2\3byGuid=\5\6"); 
} 

这将转换并进入 “ID” 参数到在后端 “byGuid” 参数。 t也会与URL字符串的其余部分做一堆东西,但基本知识在那里。所以如果有人想做类似的事情,这是一个很好的起点。