更新時(shí)間:2021-08-27 來(lái)源:黑馬程序員 瀏覽量:
rewrite指令該指令通過(guò)正則表達(dá)式的使用來(lái)改變URI??梢酝瑫r(shí)存在一個(gè)或者多個(gè)指令,按照順序依次對(duì)URL進(jìn)行匹配和處理。
| 語(yǔ)法 | rewrite regex replacement [flflag]; |
| 默認(rèn)值 | — |
| 位置 |
server、location、if |
regex:用來(lái)匹配URI的正則表達(dá)式
replacement:匹配成功后,用于替換URI中被截取內(nèi)容的字符串。如果該字符串是以"http://"或者"https://"開(kāi)頭的,則不會(huì)繼續(xù)向下對(duì)URI進(jìn)行其他處理,而是直接返回重寫(xiě)后的URI給客戶(hù)端。
flag:用來(lái)設(shè)置rewrite對(duì)URI的處理行為,可選值有如下:
·last:終止繼續(xù)在本location塊中處理接收到的URI,并將此處重寫(xiě)的URI作為一個(gè)新的URI,使用各location塊進(jìn)行處理。該標(biāo)志將重寫(xiě)后的URI重寫(xiě)在server塊中執(zhí)行,為重寫(xiě)后的URI提供了轉(zhuǎn)入到其他location塊的機(jī)會(huì)
location rewrite {
rewrite ^/rewrite/(test)\w*$ /$1 last;
rewrite ^/rewrite/(demo)\w*$ /$1 last;
}
location /test{
default_type text/plain;
return 200 test_success;
}
location /demo{
default_type text/plain;
return 200 demo_success;
}
訪(fǎng)問(wèn) http://192.168.200.133:8081/rewrite/testabc ,能正確訪(fǎng)問(wèn)

·break:將此處重寫(xiě)的URI作為一個(gè)新的URI,在本塊中繼續(xù)進(jìn)行處理。該標(biāo)志將重寫(xiě)后的地址在當(dāng)前的location塊中執(zhí)行,不會(huì)將新的URI轉(zhuǎn)向其他的location塊。
location rewrite {
#/test /usr/local/nginx/html/test/index.html
rewrite ^/rewrite/(test)\w*$ /$1 break;
rewrite ^/rewrite/(demo)\w*$ /$1 break;
}
location /test{
default_type text/plain;
return 200 test_success;
}
location /demo{
default_type text/plain;
return 200 demo_success;
}
訪(fǎng)問(wèn) http://192.168.200.133:8081/rewrite/demoabc ,頁(yè)面報(bào)404錯(cuò)誤

·redirect:將重寫(xiě)后的URI返回給客戶(hù)端,狀態(tài)碼為302,指明是臨時(shí)重定向URI,主要用在replacement變量不是以"http://"或 者"https://"開(kāi)頭的情況。
location rewrite {
rewrite ^/rewrite/(test)\w*$ /$1 redirect;
rewrite ^/rewrite/(demo)\w*$ /$1 redirect;
}
location /test{
default_type text/plain;
return 200 test_success;
}
location /demo{
default_type text/plain;
return 200 demo_success;
}
訪(fǎng)問(wèn)http://192.168.200.133:8081/rewrite/testabc請(qǐng)求會(huì)被臨時(shí)重定向,瀏覽器地址也會(huì)發(fā)生改變
·permanent:將重寫(xiě)后的URI返回給客戶(hù)端,狀態(tài)碼為301,指明是永久重定向URI,主要用在replacement變量不是以"http://"或 者"https://"開(kāi)頭的情況。
location rewrite {
rewrite ^/rewrite/(test)\w*$ /$1 permanent;
rewrite ^/rewrite/(demo)\w*$ /$1 permanent;
}
location /test{
default_type text/plain;
return 200 test_success;
}
location /demo{
default_type text/plain;
return 200 demo_success;
}
訪(fǎng)問(wèn)http://192.168.200.133:8081/rewrite/testabc請(qǐng)求會(huì)被永久重定向,瀏覽器地址也會(huì)發(fā)生改變
該指令配置是否開(kāi)啟URL重寫(xiě)日志的輸出功能。
| 語(yǔ)法 | rewrite_log on|off; |
| 默認(rèn)值 | rewrite_log off; |
| 位置 |
http、server、location、if |
開(kāi)啟后,URL重寫(xiě)的相關(guān)日志將以notice級(jí)別輸出到error_log指令配置的日志文件匯總。
rewrite_log on; error_log logs/error.log notice;
將本頁(yè)面鏈接發(fā)送給QQ:435946716,免費(fèi)獲取上面課程全套視頻、筆記和源碼。
猜你喜歡:
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營(yíng)】深圳跨境電商運(yùn)營(yíng)畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級(jí)93%同學(xué)已拿到Offer, 一線(xiàn)均薪資 1W+
2025-09-19【AI鴻蒙開(kāi)發(fā)】上海校區(qū)AI鴻蒙開(kāi)發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19