rewrite命令使用正則表達(dá)式來匹配請求URI,被匹配到的URI將會被重寫,可以實現(xiàn)內(nèi)部URL重寫或URL重定向。rewrite命令可以出現(xiàn)在server、location、if語句塊中。多個rewrite語句按照它們在配置文件中出現(xiàn)的位置從上往下順序執(zhí)行,匹配到某一條rewrite語句后是否會繼續(xù)向下執(zhí)行或后續(xù)如何處理,由那條語句決定。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了永和免費建站歡迎大家使用!
命令語法格式:
rewrite 正則表達(dá)式 新URI [flag]; |
"正則表達(dá)式"用于匹配"請求URI",匹配到的URI將會被替換成"新URI"。
"新URI"可以是單純的URI,也可以是一個完整的URL地址:
當(dāng)"新URI"是單純的URI時,稱作內(nèi)部URL重寫。此時本條rewrite語句會按照規(guī)則將請求URL重寫成新的URL,但重寫完成后的行為則受 [flag] 選項控制。
當(dāng)"新URI"是一個完整的URL地址,即以"http://"、"https://"或"$scheme"開頭的地址時,稱作URL重定向。此時本條rewrite規(guī)則重寫完成后,服務(wù)端不再進(jìn)行進(jìn)一步處理,它會立刻將得到的新URL返回給客戶端(301、302等重定向的形式),服務(wù)端處理完成,客戶端則會重新發(fā)起對新URL的請求。
[flag] 選項用于調(diào)控重寫的行為,它的取值可能是:
last:重寫完成后,會停止繼續(xù)處理當(dāng)前區(qū)塊所有屬于ngx_http_rewrite_module模塊的語句(即不會繼續(xù)匹配當(dāng)前區(qū)塊余下的rewrite語句或其它屬于該模塊的語句)。重寫得到的新URL會重新匹配所有l(wèi)ocation語句,以進(jìn)行進(jìn)一步處理。
break:重寫完成后,會停止繼續(xù)處理當(dāng)前區(qū)塊所有屬于ngx_http_rewrite_module模塊的語句(即不會繼續(xù)匹配當(dāng)前區(qū)塊余下的rewrite語句或其它屬于該模塊的語句),就像break命令一樣,不會有進(jìn)一步的動作。
redirect:重寫完成后,返回帶有302代碼(臨時重定向)的新URL給客戶端,服務(wù)端處理完成。該flag只有在"新URI"不是完整的URL地址時才會生效。
permanent:重寫完成后,返回帶有301代碼(永久重定向)的新URL給客戶端,服務(wù)端處理完成。
示例:
先在網(wǎng)頁根目錄下創(chuàng)建一些目錄和文件用于后續(xù)測試。
[root@gw ~]# mkdir -p /usr/local/nginx/html/dir/subdir1 [root@gw ~]# mkdir -p /usr/local/nginx/html/dir/subdir2 [root@gw ~]# echo 'subdir1 testfile.html' > /usr/local/nginx/html/dir/subdir1/testfile.html [root@gw ~]# echo 'subdir2 testfile.html' > /usr/local/nginx/html/dir/subdir2/testfile.html |
修改nginx配置文件,定義rewrite規(guī)則,可以在server語句塊中定義。
[root@gw ~]# vim /usr/local/nginx/conf/nginx.conf server { rewrite ^/dir/(.*)/.*$ /dir/$1/testfile.html break; } |
上面rewrite規(guī)則的含義是:若請求URI符合^/dir/(.*)/.*$,則將其重寫為/dir/$1/testfile.html。$1是引用請求URI中第一個括號括起來的內(nèi)容,$2、$3等類似(如果有的話)。這樣,當(dāng)請求是http://172.16.111.114/dir/subdir1/whaterver這種時,它將變成訪問/dir/subdir1/testfile.html;若請求是http://172.16.111.114/dir/subdir2/whaterver時,它將訪問/dir/subdir2/testfile.html這個文件。如下所示:
打開瀏覽器,按下F12鍵,切換到網(wǎng)絡(luò)選項卡,再在瀏覽器地址欄中輸入要訪問的URL地址,就可以看到是否有URL重寫或重定向:
網(wǎng)頁題目:nginx中的rewrite語句
轉(zhuǎn)載注明:http://m.rwnh.cn/article4/jepsoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站營銷、標(biāo)簽優(yōu)化、ChatGPT、品牌網(wǎng)站設(shè)計、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)