在server塊下,會優先執行rewrite部分,然後才會去匹配location塊
server中的rewrite break和last沒什麼區別,都會去匹配location,所以沒必要用last再發起新的請求,可以留空
不寫last和break - 那麼流程就是依次執行這些rewrite
1. rewrite break
url重寫後,直接使用當前資源,不再執行location裡餘下的語句,完成本次請求,位址列url不變
2. rewrite last
url重寫後,馬上發起乙個新的請求,再次進入server塊,重試location匹配,超過10次匹配不到報500錯誤,位址列url不變
3. rewrite redirect
返回302臨時重定向,位址列顯示重定向後的url,爬蟲不會更新url(因為是臨時)
4. rewrite permanent
返回301永久重定向, 位址列顯示重定向後的url,爬蟲更新url
如果location中rewrite後是對靜態資源的請求,不需要再進行其他匹配,一般要使用break或不寫,直接使用當前location中的資料來源,完成本次請求
如果location中rewrite後,還需要進行其他處理,如動態fastcgi請求(.php,.jsp)等,要用last繼續發起新的請求
(根的location使用last比較好, 因為如果有.php等fastcgi請求還要繼續處理)
if語句主要用來判斷一些在rewrite語句中無法直接匹配的條件,比如檢測檔案存在與否,http header,cookie等
= 嚴格匹配這個查詢。如果找到,停止搜尋。
^~ 匹配路徑的字首,如果找到,停止搜尋。
~ 為區分大小寫的正則匹配
~* 為不區分大小寫匹配
優先順序: =, ^~, ~/~*, 無
放在server塊rewrite語句前面
如果是直接請求某個真實存在的檔案,則用break語句停止rewrite檢查
if (-f $request_filename)
from:
nginx rewrite 重寫規則
1注意點 在重寫的時候,一定要注意,if 和後面的括號是要有乙個空格的 if host com 2.在重寫的時候,需要使用正規表示式 host 代表網域名稱,首先判斷網域名稱,來看這個正則 rewrite de permanent 代表網域名稱下面的 com de 這個路徑下面的,重寫為 其中 1代...
nginx Rewrite語法詳解
重寫中用到的指令 if 條件 設定條件,再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 跳轉的話url都變了,變成重新http請求404.html,而內部rewrite,上下文沒變,就是說 fastcgi script name 仍然是 ...
Nginx Rewrite規則初探
nginx rewrite nginx url位址重寫 rewrite 主要的功能就是實現url的重寫,nginx的rewrite規則採用pcre,perl相容正規表示式的語法規則匹配,如果需要nginx的rewrite功能,在編譯nginx之前,需要編譯安裝pcre庫。通過rewrite規則,可以...