Nginx rewrite

在瀏覽器輸入www.jingdong.com可以幫你跳轉到https://www.jd.com/,而且在輸入一些路徑的時候比如https://www.jd.com/cwwecvwev這種,正常情況會報404資源找不到,但是它幫你重定向到了首頁。

在手機端打開京東是手機端的頁面https://m.jd.com/,在pc端打開的是https://www.jd.com/頁面,在不同的終端打開的頁面的地址是不一樣的。

 

Nginx的rewrite功能需要pcre軟件的支持,即通過perl兼容正則表達式語句進行規則匹配的。默認參數編譯nginx就會支持rewrite的模塊,但是也必須要pcre的支持。

rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部分內容,重定向到replacement,結尾是flag標記。

 

rewrite語法

rewrite  <regex>      <replacement>             [flag]

正則                            替代內容                    flag標記

 

正則:perl兼容正則表達式語句進行規則匹配

1

2

3

4

5

6

7

8

9

10

11

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

?     :重複0次或1次

+     :重複1次或更多次

*      :重複0次或更多次

\d     :匹配數字

^      :匹配字符串的開始字符

$      :匹配字符串的結束字符

{n}    :重複n次

{n,}   :重複n次或更多次

[c]     :匹配單個字符c

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

在rewrite中,如果使用小括號(),那麼在小括號之間匹配的內容,可以在後面通過$1來引用,$2表示的是前面第二個()裏的內容。

 

替代內容:將正則匹配的內容替換成replacement

 

flag標記:rewrite支持的flag標記

flag標記說明:

last #本條規則匹配完成終止當前location的規則,繼續向下匹配新的location URI規則

break #本條規則匹配完成即終止,不再匹配後面的任何規則

redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址

permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址

 

 

rewrite實現域名跳轉

當訪問test.com時候,跳轉到www.test.com,域名之間的跳躍,即從一個server虛擬主機跳到另外一個server虛擬主機

server {
listen 80;
server_name test.com;
rewrite ^/(.*)$ http://www.test.com/$1;
}

server{
listen 80;
charset utf-8;
server_name www.test.com;
location /{
root  /data/www;
index index.html;
  }
}

[root@www ~]# echo "rewrite sucess this is www.test.com" > /data/www/index.html

修改C:\windows\system32\drivers\etc/hosts文件添加如下,在本地做解析

192.168.179.99  www.test.com    test.com

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章