2016-07-04 25 views
0

對於我正在處理的Web服務,我們使用清漆將「用戶友好」URL映射到頁面實際位於的較長URL。因此,例如:將URL與清漆進行映射時傳遞查詢字符串

真正網址:https://example.com/stuff/things/page.php

用戶友好的URL:https://example.com/page

因此,我們在VCL實現這一目標的方法如下:

if (req.url ~ "page") { 
    set req.url = stuff/things/page.php 
} 

但現在我遇到一個問題,在這個問題中,查詢字符串在進程中被清除。所以https://example.com/page?username=Ataraxia的影響只是被映射到https://example.com/stuff/things/page.php,但我需要查詢字符串通過映射的URL。有誰知道我可以通過清漆達到這個目的嗎?我想我需要通過正則表達式操作提取查詢字符串並將其附加到映射的URL,但我是vcl的新手,並且不確定這是否可行,或者有更好的方法來完成此操作。

回答

1

我沒有測試,但是這可能做的工作:

if (req.url ~ "page") { 
    set req.url = "/stuff/things/page.php" + regsub(req.url, "[^?]*", ""); 
} 
+0

謝謝您的建議!我仍然在測試這個(我遇到了一些其他問題),但我一定會接受你的答案,一旦我驗證它的工作:) – Ataraxia

0

這是我做的,用得好好的,我知道這是兩年後的反應,但可能幫助別人。

if (req.url ~ "page") { 
    set req.url = regsub(req.url, "page", "stuff/things/page.php\1"); 
}