**:
本文介紹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...