nginx rewrite 相關 重定向

2021-07-09 06:26:30 字數 1620 閱讀 7593

rewrite指令的最後一項引數為flag標記,支援flag標記有:

1.last     相當於apache裡面的[l]標記,表示rewrite。

2.break本條規則匹配完成後,終止匹配,不再匹配後面的規則。

3.redirect  返回302臨時重定向,瀏覽器位址會顯示跳轉後的url位址。

4.permanent  返回301永久重定向, 瀏覽器位址會顯示跳轉後的url位址。

使用last和break實現uri重寫,瀏覽器位址列不變。而且兩者有細微差別,使用alias指令必須用last標記;使用proxy_pass指令時,需要使用break標記。last標記在本條rewrite規則執行完畢後,會對其所在server標籤重新發起請求,而break標記則在本條規則匹配完成後,終止匹配。

一般在跟location中(location /)或直接在server標籤中編寫rewrite規則,推薦使用last標記;在非根location中(location /cms/),則使用break。

nginx rewrite 相關例子

例如:

rewrite ^/test(.*)$   permanent;

訪問 會跳轉到 ?id=5

例如:如果我們將類似url /photo/123456 重定向到 /path/to/photo/12/1234/123456.png

rewrite "/photo/([0-9])([0-9])([0-9])" /path/to/photo/$1/$1$2/$1$2$3.png ;

其他例子:

#rewrite ^/index.php/c=test&art=(.*)$ /test/art/$1 redirect;

#rewrite ^/index.php/c=test&art=(.*) /test/art/$1 redirect;

#rewrite "^/index.php/c=([a-za-z]+)&([a-za-z]+)=([0-9])" /$1/$2/$3 redirect;

注:如果正規表示式裡面有花括號"" ,應該使用雙引號或單引號。

部分正規表示式可以在()內,用$1~$9來訪問

nginx的rewrite規則參考:

常用正則

.: 匹配除換行符以外的任意字元

?: 重複0次或1次

\d:匹配數字

^: 匹配字串的開始

$: 匹配字串的介紹

: 重複n次

[c]: 匹配單個字元c

[a-z]: 匹配a-z小寫字母的任意乙個

小括號()之間匹配的內容,可以在後面通過$1來引用,$2表示的是前面第二個()裡的內容。正則裡面容易讓人困惑的是\轉義特殊字元。

推薦:你分享-自主開發平台

nginx rewrite 重寫規則

1注意點 在重寫的時候,一定要注意,if 和後面的括號是要有乙個空格的 if host com 2.在重寫的時候,需要使用正規表示式 host 代表網域名稱,首先判斷網域名稱,來看這個正則 rewrite de permanent 代表網域名稱下面的 com de 這個路徑下面的,重寫為 其中 1代...

nginx Rewrite語法詳解

重寫中用到的指令 if 條件 設定條件,再進行重寫 set 設定變數 return 返回狀態碼 break 跳出rewrite rewrite 重寫 跳轉的話url都變了,變成重新http請求404.html,而內部rewrite,上下文沒變,就是說 fastcgi script name 仍然是 ...

Nginx Rewrite規則初探

nginx rewrite nginx url位址重寫 rewrite 主要的功能就是實現url的重寫,nginx的rewrite規則採用pcre,perl相容正規表示式的語法規則匹配,如果需要nginx的rewrite功能,在編譯nginx之前,需要編譯安裝pcre庫。通過rewrite規則,可以...