ApsaraVideo for VOD支援在使用者請求需要回源時進行URL改寫,改寫不影響CDN的內部鏈路和緩衝key,只會在CDN節點向來源站點發送回源請求的時候使用改寫後的URL。通過本文您可以瞭解改寫回源URL功能的操作步驟。
工作原理
通過重寫回源URL規則,使請求URL與來源站點URL匹配,準確擷取來源站點的資源,或者傳遞指定的參數給來源站點。
-
執行規則設定為“空”或者“break”的情況下,僅重寫URL中的資源路徑部分。

-
執行規則設定為“enhance_break”的情況下,能夠同時重寫資源路徑和請求參數。

注意事項
-
單個網域名稱可以配置的重寫回源路徑規則數量上限是50個。
-
規則重寫按照規則列表從上到下順序依次執行,因此順序可能會影響您的重寫結果。
-
回源URL改寫功能在配置執行規則的情況下,對URL中參數的改寫可能會與網域名稱管理 > 效能最佳化頁簽下的忽略參數功能相衝突,同時配置的時候,需要注意避免配置衝突。
操作步驟
在左側導覽列選擇配置管理 > 分发加速配置 > 域名管理,進入到網域名稱管理頁面。
-
單擊目標網域名稱所在行的配置。
-
在指定網域名稱的左側導覽列,單擊回源配置。
-
單擊回源URL改寫頁簽。
-
單擊添加,並根據您的需求,配置待改寫的Path、目標Path和執行規則。
重要規則改寫按照回源URL改寫頁面的規則列表從上到下順序執行,此順序可能會影響您的改寫結果。
參數
樣本
說明
待改寫的Path
^/hello$
以正斜線(/)開頭的URL,不含http://頭及網域名稱。支援PCRERegex。
目標Path
/hello/test
以正斜線(/)開頭的URL,不含http://頭及網域名稱。
執行規則
空
如果配置了多條規則,在匹配執行當前規則後,按照從上到下順序按依次執行可以匹配的所有規則。
break
-
如果配置了多條規則,若請求的URL匹配了當前規則,匹配執行完當前規則後,剩餘規則將不再匹配。
-
只修改URL中的資源路徑部分,不修改URL的參數,不影響回源參數改寫功能對URL中參數的改寫。
enhance break
-
如果配置了多條規則,若請求的URL匹配了當前規則,匹配執行完當前規則後,剩餘規則將不再匹配。
-
與break相似,但是增加了對URL中參數部分的改寫能力。
-
-
單擊确定,使改寫規則開始執行和生效。
您也可以在回源URL改寫頁面的規則列表中,單擊修改或删除,對當前配置的規則進行相應操作。
配置樣本
樣本一:執行空規則
|
待重寫的Path |
^/hello$ |
|
目標Path |
/index.html |
|
執行規則 |
空 |
|
結果說明 |
原始請求: 重寫後的回源請求: 該請求將會繼續匹配重寫回源路徑規則列表中其餘的規則。 |
樣本二:執行break規則
|
待重寫的Path |
^/hello.jpg$ |
|
目標Path |
/image/hello.jpg |
|
執行規則 |
break |
|
結果說明 |
原始請求: 重寫後的回源請求: 該請求將不再繼續匹配重寫回源路徑規則列表中其餘的規則。 |
樣本三:執行enhance break規則
|
待重寫的Path |
^/hello.jpg?code=123$ |
|
目標Path |
/image/hello.jpg?code=321 |
|
執行規則 |
enhance break |
|
結果說明 |
原始請求: 重寫後的回源請求: 該請求將不再繼續匹配重寫回源路徑規則列表中其餘的規則。 |
樣本四:在檔案名稱是變數的情況下對根目錄添加URL首碼
例如:將包含/xxx的URL(xxx代表任意檔案名稱,例如:/hello.jpg、/hello.html等等)重寫為/image/xxx,即對根目錄下的任意檔案的URL都插入路徑/image。
|
待重寫的Path |
^(.*)$ 說明
|
|
目標Path |
/image$1 說明
|
|
執行規則 |
break |
|
結果說明 |
該請求將不再繼續匹配回源URL重寫規則列表中其餘的規則。 |
樣本五:在檔案名稱是變數的情況下對指定目錄添加URL首碼
例如:將包含/live/xxx的URL(xxx代表任意檔案名稱,例如:/live/hello.jpg、/live/hello.html 等等)重寫為/image/live/xxx,即對目錄/live下的任意檔案的URL都插入路徑/image。
|
待重寫的Path |
^/live/(.*)$ |
|
目標Path |
/image/live/$1 |
|
執行規則 |
break |
|
結果說明 |
該請求將不再繼續匹配回源URL重寫規則列表中其餘的規則。 |
樣本六:匹配多條規則時,執行空規則
第一條規則的待修改的Path為 ^/image_01.png$,目標Path為 /image_02.png,執行規則為空白;第二條規則的待修改的Path為 ^(.*)$,目標Path為 /image$1,執行規則為空白。兩條規則狀態均為已生效。
結果說明:
-
原始請求:
http://example.com/image_01.png -
重寫後的回源請求:
http://example.com/image/image_02.png說明先匹配第一條規則,重寫為
http://example.com/image_02.png,繼續匹配第二條規則,最終重寫為http://example.com/image/image_02.png。
樣本七:匹配多條規則時,執行break規則
第一條規則:待改寫Path為^/image_01.png$,目標Path為/image_02.png,執行規則為break。第二條規則:待改寫Path為^(.*)$,目標Path為/image$1,執行規則為空白。兩條規則狀態均為已生效。
結果說明:
-
原始請求:
http://example.com/image_01.png -
重寫後的回源請求:
http://example.com/image_02.png說明先匹配第一條規則,重寫為
http://example.com/image_02.png,由於第一條規則設定為break,所以不再匹配後續規則。