Rewrite跳轉原理和實現(xiàn)方法

本文將為大家詳細介紹Rewrite的跳轉原理和實現(xiàn)方法,內容詳細步驟清晰,細節(jié)處理妥當,希望大家通過這篇文章有所收獲,我們先來看看Rewrite的跳轉原理:

創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經營理念,通過多達10多年累計超上千家客戶的網站建設總結了一套系統(tǒng)有效的營銷解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:汽車玻璃修復等企業(yè),備受客戶贊許。

Rewrite跳轉場景

URL看起來更規(guī)范,合理
企業(yè)會將動態(tài)URL地址偽裝成靜態(tài)地址提供服務
網址換新域名后,讓舊的訪問跳轉到新的域名上
服務端某些業(yè)務調整

Rewrite跳轉實現(xiàn)

Rewrite跳轉原理和實現(xiàn)方法

Rewrite實用場景

  • Nginx跳轉需求的實現(xiàn)方式
    使用rewrite進行匹配跳轉
    使用if匹配全局變量后跳轉
    使用location匹配再跳轉
  • rewrite放在server{},if{},location{}段中
  • 對域名或參數(shù)字符串
    使用if全局變量匹配
    使用proxy_pass反向代理

常用的正則表達式元字符

字符說明
^匹配輸入字符串的起始位置
$匹配輸入字符串的結束位置
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
.匹配除\n之外的任何單個字符,使用諸如"[.\n]"之類的模式,可匹配包括"\n"在內的任意字符
\d匹配純數(shù)字  [0-9]
{n}重復多次
{n,}重復n次或更多次
[c]匹配單個字符c
[a-z]匹配a-z小寫字母的任意一個
[a-zA-Z]匹配a-z小寫字母或A-Z大寫字母的任意一個

Rewrite命令

語法:
rewrite <regex>            <replacement>             [flag];
            正則                  跳轉后的內容               rewrite支持的flag標記

flag標記說明:

標記說明
last相當于Apache的[L]標記,表示完成rewrite
break本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則
redirect返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址,爬蟲不會更新url
permanent返回301永久重定向,瀏覽器地址欄會顯示跳轉后的URL地址,爬蟲更新url

last和break比較:

lastbreak
使用場景一般寫在server和if中一般使用在location中
URL匹配不終止重寫后的url匹配終止重寫后的url匹配

location分類

分類:
    location = patt {} [精準匹配]
    location patt {} [一般匹配]
    location ~ patt {} [正則匹配]

正則匹配的常用表達式:

標記說明
~執(zhí)行一個正則匹配,區(qū)分大小寫
~*執(zhí)行一個正則匹配,不區(qū)分大小寫
!~執(zhí)行一個正則匹配,區(qū)分大小寫不匹配
!~*執(zhí)行一個正則匹配,不區(qū)分大小寫不匹配
^~普通字符匹配;使用前綴匹配。如果匹配成功,則不再匹配其他location
=普通字符精準匹配。也就是完全匹配
@定義一個命名的location,使用在內部定向時

location優(yōu)先級

**相同類型的表達式,字符創(chuàng)長的會優(yōu)先匹配**
**按優(yōu)先級排列**
    = 類型
    ^~ 類型表達式
    正則表達式(~和~*)類型
    常規(guī)字符串匹配類型,按前綴匹配
    通常匹配(/),如果沒有其他匹配,任何請求都會匹配到

比較rewrite和location

**相同點**
        都能實現(xiàn)跳轉
**不同點**
        rewrite是在同一域名內更改獲取資源的路徑
        location是對一類路徑做控制訪問或方向代理,還可以proxy_pass到其他機器
**rewrite會寫在location里執(zhí)行順序**
        執(zhí)行server塊里面的rewrite指令
        執(zhí)行l(wèi)ocation匹配
        執(zhí)行選定的location中的rewrite指令

location優(yōu)先級的示例

##精確匹配/,主機名后面不能帶任何字符串
location = / {
[ configuration A ]     
}

##所有的地址都以/開頭,這條規(guī)則將匹配到所有請求,但正則和最長字符串會優(yōu)先匹配
location  / {
[ configuration B ]     
}

##匹配任何以/documents/開頭的地址,當后面正則表達式沒有匹配到時,才起作用
location /documents/ {
[ configuration C ]
}

##匹配任何以/documents/abc開頭的地址,當后面正則表達式沒有匹配到時,才會起作用
location ~ /documents/abc {
[ configuration D ]
}

##以/images/開頭的地址,匹配符合后,停止往下匹配
location ^~ /images/ {
[ configuration E ]
}

##匹配所有以gif結尾的請求,/images/下的圖片會被[configuration E]處理,因為^~的優(yōu)先級更高
location ~* \.(gif|jpg|jpeg)$ {
[ configuration F ]
}

##最長字符匹配到/images/abc,優(yōu)先級最低
location /images/abc {
[ configuration G ]
}

##以/images/abc開頭的,優(yōu)先級次之
location ~ /images/abc {
[ configuration H ]
}

##如果和正則~/images/abc/1.html相比,正則優(yōu)先級更高
location /images/abc/1.html {
[ configuration I ]
}

location優(yōu)先級規(guī)則

匹配某個具體文件:
(location = 完整路徑)>(location ^~完整路徑)>(location ~完整路徑)>(location ~完整路徑)>(location 完整路徑)>(location /)
用目錄做匹配訪問某個文件:
(location = 目錄)>(location ^~目錄/)>(location ~ 目錄)>(location ~
 目錄)>(location 目錄)>(location /)

看完上述內容,你們對Rewrite的跳轉原理和實現(xiàn)方法大概了解了嗎?如果想了解更多相關文章內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!



網站題目:Rewrite跳轉原理和實現(xiàn)方法
瀏覽路徑:http://bm7419.com/article14/igcjge.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、網站策劃App開發(fā)、ChatGPT、微信小程序、網站導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站建設網站維護公司