我可以使用Varnish重新格式化我的URL参数吗?

时间:2010-08-23 12:13:51

标签: url parameters url-rewriting varnish

我有一个相对简单的(我认为)用例,但我找不到任何有人这样做的例子。我们在两个不同的应用程序前面使用Varnish作为缓存和反向代理,并且希望在两者之间使事情更加统一,因为它们都做类似的事情。我希望Varnish可以帮助重写URL,如下所示。

分页的原始应用程序网址(获取前10项):

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

所需网址:

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

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

另一个例子是:

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

为:

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

有没有人有清漆的经验以及如何做到这一点?

由于

1 个答案:

答案 0 :(得分: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字符串的其余部分做了很多东西,但基础知识就在那里。因此,如果有人想做类似的事情,这是一个很好的起点。