很不錯的NGINX URL重寫例項

2021-06-19 21:14:11 字數 3872 閱讀 3742

**:

本文介紹nginx url重寫的相關知識,包括301重定向的內容等,希望對大家有所幫助。

nginx rewrite 實現二級網域名稱跳轉

當訪問跳轉到

方法一:

這種方法瀏覽器位址會變www.jbxue.com/test/abc

實現訪問如下:

複製**

**如下:

server }

server }

方法二、

當訪問跳轉到

複製**

**如下:

server

location /

rewrite ^/(.*)    /test/$domain/$1 last; }

access_log off; }

rewrite命令

nginx的rewrite相當於apache的rewriterule(大多數情況下可以把原有apache的rewrite規則加上引號就可以直接使用),它可以用在server,location 和if條件判斷塊中,命

令格式如下:

rewrite 正規表示式 替換目標 flag標記

flag標記可以用以下幾種格式:

last - 基本上都用這個flag。

break - 中止rewirte,不在繼續匹配

redirect - 返回臨時重定向的http狀態302

permanent - 返回永久重定向的http狀態301

例如下面這段設定nginx將某個目錄下面的檔案重定向到另乙個目錄,$2對應第二個括號(.*)中對應的字串:

複製**

**如下:

location /download/

nginx重定向的if條件判斷

在server和location兩種情況下可以使用nginx的if條件判斷,條件可以為以下幾種:

正規表示式

如:匹配判斷

~ 為區分大小寫匹配; !~為區分大小寫不匹配

~* 為不區分大小寫匹配;!~為不區分大小寫不匹配

就是當使用者輸入 www.a.com.cn 自動跳轉到www.a.com 這個網域名稱:

rewrite ^/(.*)$ permanent; 或者cname

例如下面設定nginx在使用者使用ie的使用重定向到/nginx-ie目錄下:

檔案和目錄判斷

-f和!-f判斷是否存在檔案

-d和!-d判斷是否存在目錄

-e和!-e判斷是否存在檔案或目錄

-x和!-x判斷檔案是否可執行

例如下面設定nginx在檔案和目錄不存在的時候重定向:

複製**

**如下:

if (!-e $request_filename)

return

返回http**,例如設定nginx防盜煉:

複製**

**如下:

記一正則,匹配非某單詞

由於要rewrite乙個位址從

/mag/xx/***/ -> /m/***

但原先 /mag/xx/more/ 要保留

這就得寫乙個比較奇特的正則了,嘗試了比較多的寫法也沒成功

最先想到的是:

複製**

**如下:

location ~* ^/mag/[^/]+/[^(more)]+/

的寫法並不湊效,裡面是匹配單個字元的,這樣無效,匹配不了

還是小范同學不錯,研究的深入,提供了非某單詞的寫法 (?!more)

複製**

**如下:

location ~* ^/mag/[^/]+/(?!more)([^/]+)/

這個寫法勉強可以應付了,後面的匹配單元雖說還不完美,但也能夠對付我的所有需求內容了。

有需要的可以參考此寫法。

常用分組語法捕獲

(exp) 匹配exp,並捕獲文字到自動命名的組裡

(?exp) 匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp) 匹配exp,不捕獲匹配的文字,也不給此分組分配組號

(?=exp) 匹配exp前面的位置

(?<=exp) 匹配exp後面的位置

(?!exp) 匹配後面跟的不是exp的位置

(?為何要使用301重定向

在**建設中需要網頁重定向的情況很多:如網頁目錄結構變動,網頁重新命名、網頁的副檔名改變、**網域名稱改變等。如果不做重 定向,使用者的收藏和搜尋引擎資料庫中的舊位址只能讓訪客得到乙個404錯誤資訊頁面,訪問流量白白喪失。不僅如此,之前該頁面的一切積累(比如pr值)就 都白費了。

301重定向不僅能使頁面實現自動跳轉,對於搜尋引擎來說,也可能可以傳遞pr值。

nginx重定向規則詳細介紹請參考:

301重定向方法

進行了301重定向,把www .jefflei.com和jefflei.com合併,並把之前的網域名稱也一併合併. 有兩種實現方法,第一種方法是判斷nginx核心變數host(老版本是http_host):

複製**

**如下:

server

... }

第二種方法:

複製**

**如下:

server

測試了第一種方法ok,這兩種方法中, permanent是關鍵,詳細說明見nginx重定向規則說明。

last – 基本上都用這個flag。

break – 中止rewirte,不在繼續匹配

redirect – 返回臨時重定向的http狀態302

permanent – 返回永久重定向的http狀態301

好了,現在可以檢查結果,這裡可以看返回的http頭資訊:

第二種方法沒有測試成功...

測試是否定向成功

輸入指令~

/usr/local/nginx/sbin/nginx -t

測試成功~ 重啟nginx~ 輸入指令~

/usr/local/nginx/sbin/nginx -s reload

重啟之後測試一下~是否成功設定完成! 輸入指令~

curl -i imcat.tk

會輸出:

您可能感興趣的文章:

nginx rewrite(nginx url位址重寫)的配置示例

nginx實現url重寫-rewrite例項參考

nginx中一些常用的 url 重寫方法

nginx配置url重寫及自定義404錯誤頁面等

nginx常用的 url 重寫方法

通過例子來看nginx下的rewrite規則

nginx中的alias以及alias目錄中使用rewrite的方法

nginx中配置emlog的rewrite規則

nginx與apache的rewrite規則的區別

(圖)nginx帶問號(?)帶引數的rewrite規則的書寫方法

nginx rewrite 偽靜態配置引數詳解

nginx rewrite 偽靜態配置引數和使用例子

很不錯的文章

身邊經常可見奇形怪狀的男子。打扮時髦,出手大方,善於與女子曖昧,周轉靈活,腦筋清楚,身上卻不見任何承擔的重量。有些尚且自戀到一定程度,全身上下的名牌,告訴你他的鞋子購自普拉達,衣服來自polo。也能暢談一下哲學或者人生道理,時不時亮出無從考證的身份,炫耀左右逢源,家底豐厚的能力。男人無趣到只能以吹噓...

很不錯的心裡測試

場景 你在森林的深處,你向前走,看見前面有一座很舊的小屋。1 這個小屋的門現在是什麼狀態?開著 關著 2 你走進屋子裡看見一張桌子這個桌子是什麼形狀的?圓形 橢圓形 正方形 長方形 三角形 3 在桌子上有個花瓶,瓶子裡有水,有多少水在花瓶裡?滿的 一半 空的 4 這個瓶子是由什麼材料製造的?玻璃 陶...

c 的委託函式很不錯

比如form1建立form2並顯示form2,想在form2關閉時重新整理form1 其實有很多的方法,但是感覺都不大好,運用c 的委託函式感覺很好,又能解決問題 在form1 宣告委託函式 public delegate void processrefresh 在form2 宣告委託屬性 publ...