2010-08-23 66 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字符串的其餘部分做一堆東西,但基本知識在那裏。所以如果有人想做類似的事情,這是一個很好的起點。