16 Nginx 重寫與重定向

2022-06-23 21:54:06 字數 1911 閱讀 5020

為了能夠在修改**結構或域名後,避免造成**中的連結或在其他**中的外鏈失效,已經提高**在搜尋引擎的收錄量和排名等目的,通常會採用url重寫與重定向,在增強**專業化的同時,為使用者提供更加舒適的使用體驗。

1、rewrite模組的介紹

重寫與重定向功能是現在大多數web伺服器都支援的一項功能,相對於其他產品而言,nginx中的rewrite模組提供的功能在配置上更加靈活自由,可定製性非常高,它的實現方式簡單,只需要通過rewrite指令根據nginx提供的全域性變數或自定義的變數,結合正規表示式已經進一步處理的標識就可以完成url重寫或重定向。

2、rewrite實現重寫

rewrite指令基本語法:

rewrite regex replacement [flag];

flag可選引數值:

當flag值為last或break時,表示當前的設定為重寫,當flag的值為redirect或permanent時表示重定向;

2.1、新增rewrite指令

if與括號有空格,!-e與$request_filename有空格;

!-e用於判斷不存在指定的檔案或目錄時,執行if塊內的語句,內建變數$request_filename表示當前請求的檔案路徑;

^/.*用於匹配當前**下的所有請求;

/default/default.html用於替換符合指定規則的請求;

if指令判斷符號:

測試驗證:

重啟訪問一個不存在的檔案

2.2、break和last標識的區別

在使用rewrite實現重寫時,需要注意flag可選引數值break和last的區別,前者在rewrite指令匹配成功後就不再進行匹配,而 後者在rewrite後會根據rewrite匹配的規則重新發起一個請求繼續進行匹配。

設定匹配規則:

重啟訪問

3、rewrite實現重定向

rewrite的重定向就是將使用者訪問的url修改為重定向的地址,只需將flag的可選引數值設定為redirect或permanent即可實現。

利用set指令為變數$name賦值,$1表示符合正規表示式第一個字模式的值,子模式([0-9]+)匹配到的值;

使用者請求數字.jpg時,重定向到數字.jpg;