2.nginx_rewrite模塊
阿新 • • 發佈:2019-03-30
正則表達 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
- 結束當前的請求處理,用替換後的URI重新匹配location;
- 可理解為重寫(rewrite)後,發起了一個新請求,進入server模塊,匹配location;
- 如果重新匹配循環的次數超過10次,nginx會返回500錯誤;
- 返回302 http狀態碼 ;
- 瀏覽器地址欄顯示重地向後的url
- break
- 結束當前的請求處理,使用當前資源,不在執行location裏余下的語句;
- 返回302 http狀態碼 ;
- 瀏覽器地址欄顯示重地向後的url
- redirect
- 臨時跳轉,返回302 http狀態碼;
- 瀏覽器地址欄顯示重地向後的url
- permanent
- 永久跳轉,返回301 http狀態碼;
- 瀏覽器地址欄顯示重定向後的url
2.nginx_rewrite模塊