目錄
一:Rewrite基本概述
1.Rewrite簡介
Rewrite主要實現url地址重寫,以及重定向,就是把傳入web的請求重定向到其他url的過程。
2.Rewrite基本概述
- 1.地址跳轉,用戶訪問www.linux.com這個URL是,將其定向至一個新的域名www.baidu.com。
- 2.協議跳轉,用戶通過http協議請求網站時,將其重新跳轉至https協議方式。
- 3.偽靜態,將動態頁面顯示為靜態頁面方式的一種技術,便於搜索引擎的錄入,同時建上動態URL地址對外暴露過多的參數,提升更高的安全性。
- 4.搜索引擎,SEO優化依賴於url路徑,好記的url便於搜索引擎錄入。

3.Rewrite作用
URL Rewrite即URL重寫,就是把傳入Web的請求重定向到其他URL的過程。URL Rewrite最常見的應用是URL偽靜態化,是將動態頁面顯示為靜態頁面方式的一種技術。比如http://www.123.com/news/index.asp?id=123 使用UrlRewrite轉換后可以顯示為http://www.123.com/news/123.html。
4.什么是URL?
URL 代表着是統一資源定位符(Uniform Resource Locator)。URL 無非就是一個給定的獨特資源在 Web 上的地址。理論上說,每個有效的 URL 都指向一個唯一的資源。這個資源可以是一個 HTML 頁面,一個 CSS 文檔,一幅圖像,等等。而在實際中,也有一些例外,最常見的情況就是一個 URL 指向了不存在的或是被移動過的資源。由於通過 URL 呈現的資源和 URL 本身由 Web 服務器處理,因此 web 服務器的擁有者需要認真地維護資源以及與它關聯的URL。

二:rewrite語法
語法
Syntax: rewrite regex replacement [flag];
默認情況
Default: —
應用場景
Context: server, location, if
rewrite # 模塊命令
regex # 請求的鏈接(支持正則表達式)
replacement # 跳轉的鏈接
[flag]; # 標簽
location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
默認類型
}
解析:
正則表達式方式:
命令 http://www.123.com/news/index.asp? 匹配目錄/mps/匹配文件視頻.mps 結束
三:Rewrite標記Flag
rewrite指令根據表達式來重定向URL,或者修改字符串,可以應用於server,location,if環境下,每行rewrite指令最后跟一個flag標記,支持的flag標記有如下表格所示:
| flag | 作用 |
|---|---|
| last | 本條規則匹配完成后,停止匹配,不再匹配后面的規則 |
| break | 本條規則匹配完成后,停止匹配,不再匹配后面的規則 |
| redirect | 返回302臨時重定向,地址欄會顯示跳轉后的地址 |
| permanent | 返回301永久重定向,地址欄會顯示跳轉后的地址 |
1.last和break的區別
- 實戰案例
server {
server_name _;
listen 80;
location ~ ^/break {
rewrite (.*) /test break;
}
location ~ ^/last {
rewrite (.*) /test last;
}
location /test {
default_type text/html;
return 200 "test";
}
}
2.break請求:
1.請求linux.rewrite.com/break
2.匹配 location ~ ^/break 會跳轉到 linux.rewrite.com/test
3.請求跳轉后,回去查找本地站點目錄下的 /test
4.如果找到了,則返回/code/test/index.html的內容;
5.如果沒找到該目錄則報錯404,如果找到該目錄沒找到對應的文件則403
3.last請求:
1.請求linux.rewrite.com/last
2.匹配 location ~ ^/last 會跳轉到 linux.rewrite.com/test
3.如果找到了,則返回/code/test/index.html的內容;
4.如果沒有找到,會重新對當前server發起請求,這個時候訪問地址就變成 linux.rewrite.com/test
5.重新請求server會匹配到 location /test/ 直接返回該location的內容
6.如果也沒有location匹配,再返回404;
四:測試last和break的區別
1.測試last
[root@lb01 ~]# cd /etc/nginx/conf.d/
網址配置文件
[root@lb01 conf.d]# vim flag.conf

2.網址測試last
192.168.15.5/last

3.網址測試break
192.168.15.5/break

五:redirect和permanent的區別
- 實戰案例
重定向
server {
server_name _;
listen 80;
location /redirect {
rewrite (.*) http://www.baidu.com redirect;
}
location /permanent {
rewrite (.*) http://www.baidu.com permanent;
}
1.作用
redirect: 每次請求都會詢問服務器,如果當服務器不可用時,則會跳轉失敗。
permanent: 第一次請求會詢問,瀏覽器會記錄跳轉的地址,第二次則不再詢問服務器,直接通過瀏覽器緩存的地址跳轉。

