nginx URL重寫rewrite規則

2021-10-09 03:34:53 字數 3469 閱讀 1805

語法:rewrite regex replacement flag;,如:

此處的$1用於引用(.*.jpg)匹配到的內容,又如:

rewrite ^/bbs/(.*)$ redirect;

如上例所示,replacement可以是某個路徑,也可以是某個url

常見的flag

flag

作用last

基本上都用這個flag,表示當前的匹配結束,繼續下乙個匹配,最多匹配10個到20個

一旦此rewrite規則重寫完成後,就不再被後面其它的rewrite規則進行處理

而是由useragent重新對重寫後的url再一次發起請求,並從頭開始執行類似的過程

break

中止rewrite,不再繼續匹配

一旦此rewrite規則重寫完成後,由useragent對新的url重新發起請求,

且不再會被當前location內的任何rewrite規則所檢查

redirect

以臨時重定向的http狀態302返回新的url

permanent

以永久重定向的http狀態301返回新的url

rewrite模組的作用是用來執行url重定向。這個機制有利於去掉惡意訪問的url,也有利於搜尋引擎優化(seo)

nginx使用的語法源於perl相容正規表示式(pcre)庫,基本語法如下:

識別符號意義

^必須以^後的實體開頭

$必須以$前的實體結尾

.匹配任意字元

匹配指定字符集內的任意字元

[^]匹配任何不包括在指定字符集內的任意字串

()分組,組成一組用於匹配的實體,通常會有

例項:

//在/usr/local/nginx/html/下建立image目錄並上傳張**裡面

改變url並寫rewrite規則

//修改目錄名字

//寫rewrite規則

把資源放到/opt/目錄下,不是預設網頁目錄下了

[root@localhost html]# ls

50x.html imgs index.html

[root@localhost html]# mv imgs /opt/

//重寫規則

location /

location /image

location /imgs

仍可以訪問

也可以重定向網上的資源

last 一旦此rewrite規則重寫完成後,就不再被後面其它的rewrite規則進行處理,而是由useragent重新對重寫後的url再一次發起請求,並從頭開

if語法:if (condition)

應用場景:

常見的condition

測試指定路徑為檔案的可能性(-f,!-f)

測試指定路徑為目錄的可能性(-d,!-d)

測試檔案的存在性(-e,!-e)

檢查檔案是否有執行許可權(-x,!-x)

基於瀏覽器分離例項

//建立測試頁面

[root@localhost html]# pwd

/usr/local/nginx/html

[root@localhost html]# mkdir chrome

[root@localhost html]# echo "hello" > chrome/index.html

[root@localhost html]# mkdir firefox

[root@localhost html]# echo "he he" > firefox/index.html

//編輯配置檔案

在谷歌瀏覽

在火狐瀏覽

nginx URL 重寫if規則和nginx變數

url重寫 rewrite if指令 if condition 代表條件為真時的nginx操作 condition條件的寫法 1 變數名 如果變數的值為空,或者為以 0 開頭的任意字串,條件為假,其他則為真 if slow 2 使用 或者 比較變數的值 if request method post ...

Nginx URL重寫規則配置詳解

rewrite模組介紹 nginx的重寫模組是乙個簡單的正規表示式匹配與乙個虛擬堆疊機結合。依賴於pcre庫,因此需要安裝pcre。根據相關變數重定向和選擇不同的配置,從乙個location跳轉到另乙個location,不過這樣的迴圈最多可以執行10次,超過後nginx將返回500錯誤。同時,重寫模...

很不錯的NGINX URL重寫例項

本文介紹nginx url重寫的相關知識,包括301重定向的內容等,希望對大家有所幫助。nginx rewrite 實現二級網域名稱跳轉 當訪問跳轉到 方法一 這種方法瀏覽器位址會變www.jbxue.com test abc 實現訪問如下 複製 如下 server server 方法二 當訪問跳轉...