URL Rewrite(四種重定向策略)


一: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便於搜索引擎錄入。
    image
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。

image

二: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

image

2.網址測試last
192.168.15.5/last

image

3.網址測試break
192.168.15.5/break

image

五: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: 第一次請求會詢問,瀏覽器會記錄跳轉的地址,第二次則不再詢問服務器,直接通過瀏覽器緩存的地址跳轉。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM