一、使用場景
1、URL訪問跳轉
(1)頁面跳轉
(2)兼容性支持(比如新老版本交替時,給老版本一條訪問道路)
(3)展示效果(比如縮短前臺界面的地址欄的url,增強用戶體驗)
2、SEO優化
?谷歌和百度的搜索引擎排名一般都和url的復雜程度有一定關系,url太過復雜,不利于seo優化。所以,這里對url進行一定程度的縮短和偽靜態的改寫都有利于seo優化。
3、維護時的作用
(1)比如我們將后臺進行臨時性的維護,要掛一個維護頁面。
(2)或者將一部分功能進行流量的轉發。
4、安全
使用rewrite規則可以實現偽靜態,也就是將我們真實的動態的頁面進行偽裝。讓黑客駭客抓取的時候,感覺不出這是一個明顯的動態頁面。
?
二、配置語法
Syntax:rewrite regex replacement 【flag】
default:——
Context:server、location、if
注:nginx官方文檔:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
舉例:【進行緊急維護頁面rewrite配置】? ?
rewrite ^(.*)$ /data/errorPage/maintain.html break;
說明:意思是將所有的訪問都重定向到 /data/errorPage/maintain.html 頁面
?
三、正則表達式【書寫rewrite基礎,必須】
?
. | 匹配除換行符以外的任意字符 |
? | 0次或1次匹配前面的字符【zo? 與"z"和"zo"匹配,但與"zoo"不匹配? ?即 {0,1} 】 |
+ | 1次或多次匹配前面的字符【zo+ 與"zo"和"zoo"匹配,但與"z"不匹配? ?即 {1,} 】 |
* | 0次或多次匹配前面的字符【zo* 與"z"和"zoo"匹配? 即 {0,} 】 |
\d | 匹配數字 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
{n} | 匹配 重復n次? 【o{2}與'Bob'中的"o"不匹配,但與"food"中的"oo"匹配 】 |
{n,} | 匹配 重復n次或更多次 |
[c] | 匹配單個字符c |
[a-z] | 匹配 a-z小寫字母的任意一個 |
[^a-z] | 反向字符范圍,與不在指定范圍內的任意字符匹配【匹配除a-z范圍內的所有字符】 |
\ | 轉義字符(匹配具有特殊含義的符號時,就需要對那個特殊符號進行轉義)【比如.】 |
() | 標記子表達式的開始和結尾,通過 $1 , $2 調用 |
?
四、rewrite配置語法中的flag參數
last | 停止rewrite檢測【如果沒有匹配到,會繼續向下匹配】 |
break | 停止rewrite檢測【如果沒有匹配到,則不再向下匹配,直接返回結果404】 |
redirect | 返回302臨時重定向,地址欄會顯示跳轉后的地址 |
permanent | 返回301永久重定向,地址欄會顯示跳轉后的地址 |
?
五、使用rewrite規則
1、rewrite規則場景(1)
?
2、rewrite規則場景(2)
?