2016-05-12 75 views
2

This SO disucssion說,重寫使用return的代碼應類似於此如何重寫路徑,轉發參數和添加參數?

location /path/to/resource { 
    return 301 /some/other/path/$is_args$args; 
} 

到目前爲止,這麼好一個URL時向前參數。但如何添加一個任意的新參數到查詢字符串?例如id=1

該解決方案必須包括至少以下三種情況:

  1. 的原始請求已經沒有查詢參數
  2. 原始請求已經收到查詢參數,但被添加
  3. 的原始請求沒有參數已經已添加查詢參數

回答

0

要重寫路徑,您可以使用重寫關鍵字如

location /path/to/resource { 
rewrite /some/other/path/$is_args$args; 
} 

要轉發附加參數$ args,會附加查詢參數(如果存在),如果沒有查詢參數傳遞,將會爲空。

對於條件除了像ID = 1 然後新PARAM如果構建體可以在位置內等中使用:

location /path/to/resource { 
if($args !~* "id"){ 
rewrite /some/other/path/$is_args$args&id=1; 
} 
} 

如果不存在,在輸入以上網址將追加的「id」字段。

+0

如果沒有查詢參數會發生什麼?它不會以「/ some/other/path /?&id = 1」出現嗎? – Epigene

+0

真的..但我想說的是你可以把多個條件來檢查$ args是否有任何值,並相應地形成重寫url – sallu