1. 程式人生 > >2.nginx_rewrite模塊

2.nginx_rewrite模塊

正則表達 break 需要 字符串 之前 請求 context 地址欄 sch

rewrite

syntax: rewrite regex replacement [flag]
Default: —
Context: server, location, if
  • 如果正則表達式(regex)匹配到了請求的URI(request URI),這個URI會被後面的replacement替換
  • rewrite的定向會根據他們在配置文件中出現的順序依次執行
  • 通過使用flag可以終止定向後進一步的處理
  • 如果replacement以“http://”, “https://”, or “$scheme”開頭,處理將會終止,請求結果會以重定向的形式返回給客戶端(client)
  • 如果replacement字符串裏有新的request參數,那麽之前的參數會附加到其後面,如果要避免這種情況,那就在replacement字符串後面加上“?”,eg:
     rewrite ^/users/(.*)$ /show?user=$1? last;=
  • 如果正則表達式(regex)裏包含“}” or “;”字符,需要用單引號或者雙引號把正則表達式引起來

可選的flag參數如下:

  • last
  1. 結束當前的請求處理,用替換後的URI重新匹配location;
  2. 可理解為重寫(rewrite)後,發起了一個新請求,進入server模塊,匹配location;
  3. 如果重新匹配循環的次數超過10次,nginx會返回500錯誤;
  4. 返回302 http狀態碼 ;
  5. 瀏覽器地址欄顯示重地向後的url
  • break
  1. 結束當前的請求處理,使用當前資源,不在執行location裏余下的語句;
  2. 返回302 http狀態碼 ;
  3. 瀏覽器地址欄顯示重地向後的url
  • redirect
  1. 臨時跳轉,返回302 http狀態碼;
  2. 瀏覽器地址欄顯示重地向後的url
  • permanent
  1. 永久跳轉,返回301 http狀態碼;
  2. 瀏覽器地址欄顯示重定向後的url

2.nginx_rewrite模塊