2012-06-12 51 views
2

好吧,我只想補充參數每當/search被稱爲:nginx的規則參數

rewrite ^/search$ /search?foo=bar redirect; 

看似簡單的邏輯,但由於nginx的分別等等$ ISN接受參數它會導致死循環不再工作了。 /search?foo=bar一次又一次地觸發它,因爲它愚蠢地匹配。

那麼是否有任何工作解決方案沒有觸及$args

(我想用正則表達式,因爲匹配規則有點複雜的多,但基本上它我想要什麼)

回答

3

the nginx wiki,「重寫只對路徑,而不是工作參數。」

所以也許關鍵是隻有在找不到參數的情況下才能重寫。

if ($args !~ "(^|&)foo=") { 
     rewrite ^/search$ /search?foo=bar redirect; 
    } 
+0

我正要提交相同的反應。我同意。 –

+2

雖然覆蓋(或重寫)查詢字符串有危險嗎?也許替換應該是''/ search?foo = bar&$ args'' - 給它一個鏡頭,讓我們知道@Calmon! –