在軟體的發布中,我們經常會使用到 nginx,nginx 的功能非常的龐雜,其中 rewrite 是乙個非常常用的功能模組,本文介紹 rewrite 的基本概念和幾個小技巧。
rewrite 是 nginx 中的乙個模組,這個模組用來重定向頁面,在 rewrite 模組中包含了幾個指令來實現不同的功能:
return 指令是 rewrite 模組中非常常用的乙個指令,可以幫助我們做重定向和一些簡單的返回。
return code text;
return code url;
return url;
return 指令的語法由兩個或三個部分組成:
可以根據指定的正規表示式將使用者請求的 url 轉換成乙個新的 url 進行重定向。
rewrite regex replacement [flag];
return 指令的語法四個部分組成:
通過 if 指令進行一些條件的判斷,然後進行 return、rewrite 或是其他的一些處理。
檢查檔案是否存在,使用 -f 或 !-f
檢查目錄是否存在,使用 -d 或 !-d
下面以近期用到的兩個場景來演示實際的用法。
場景描述:
在手機上訪問 pc 端位址,跳轉到移動端
pc 端和移動端使用同乙個介面位址,介面位址是在 pc 端使用 /api 進行的**
只有頁面的請求跳轉到移動端,介面的請求不需要跳轉
配置如下:
server 1";
}if ($request_uri !~* /api/) 2";
}if ($flag = "012")
location /
location /api/
error_page 500 502 503 504 /50x.html;
}
因為 if 指令的條件的限制,不能再乙個 condition 中使用多條件,所以定義了乙個變數 $flag 來做判斷
場景描述:
配置如下:
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規則,可以...