Nginx的rewrite 位址重定向 剖析

2022-06-08 11:21:08 字數 2150 閱讀 5241

指令語法:rewrite regex replacement[flag];

預設值:none

應用位置:server、location、if

rewrite是實現url重定向的重要指令,他根據regex(正規表示式)來匹配內容跳轉到replacement,結尾是flag標記

簡單的小例子:

常用正規表示式:

字元描述

\將後面接著的字元標記為乙個特殊字元或者乙個原義字元或乙個向後引用

^匹配輸入字串的起始位置

$匹配輸入字串的結束位置

*匹配前面的字元零次或者多次

+匹配前面字串一次或者多次

?匹配前面字串的零次或者一次

.匹配除「\n」之外的所有單個字元

(pattern)

匹配括號內的pattern

rewrite 最後一項flag引數:

標記符號

說明last

本條規則匹配完成後繼續向下匹配新的location uri規則

break

本條規則匹配完成後終止,不在匹配任何規則

redirect

返回302臨時重定向

permanent

返回301永久重定向

之前我們通過用起別名的方式做到了不同位址訪問同乙個虛擬主機的資源,現在我們可以用乙個更好的方式做到這一點,那就是跳轉的方法

還是用www.brian.com虛擬主機為例子,修改配置檔案brian.conf:

[root@nginx www_date]# cat brian.conf 

server

server

access_log logs/brian.log main gzip buffer=128k flush=5s;

error_page 500 502 503 504 /50x.html;

location = /50x.html

}

檢查語法:

[root@nginx conf]# 

[root@nginx conf]# ../sbin/nginx -t

nginx: the configuration file /opt/nginx//conf/nginx.conf syntax is ok

nginx: configuration file /opt/nginx//conf/nginx.conf test is successful

平滑重啟:

1[root@nginx conf]# ../sbin/nginx -s reload

windows測試效果:

我們不僅可以做相同虛擬主機的資源網域名稱跳轉,也能做不同虛擬主機的網域名稱跳轉,我們下面就跳轉下當訪問brian.com網域名稱的時候跳轉到www.baidu.com的頁面:

修改www.brian.com虛擬主機的brian.conf配置檔案:

}windows測試:(訪問brian.com 跳轉到了www.baidu.com)

Nginx的rewrite 位址重定向 超細剖析

url看起來更規範 合理 企業會將動態url位址偽裝成靜態位址提供服務 換新網域名稱後,讓舊的訪問跳轉到新的網域名稱上 服務端某些業務調整 nginx跳轉需求的實現方式 使用rewrite進行匹配跳轉 使用if匹配全域性變數後跳轉 使用location匹配跳轉 rewrite放在server if ...

Nginx的Rewrite的配置

nginx的rewrite 經過網上查閱和測試,發現nginx的rewrite規則和apache的rewite規則差別不是很大,幾乎可以直接使用。比如在apache中這樣寫規則 1rewrite 0 9 html viewthread.php?tid 1 last 而在nginx中寫成這樣寫是無法啟...

Nginx基礎的Rewrite規則

rewrite是nginx乙個特別重要的指令,該指令可以使用正規表示式改寫uri。可以指定乙個或多個rewrite指令,按順序匹配 區分大小寫匹配 不區分大小寫匹配 和 區分大小寫不匹配及不區分大小寫不匹配 f和 f 判斷是否存在檔案 d和 d 判斷是否存在目錄 e和 e 判斷是否存在檔案或目錄 x...