全部產品
Search
文件中心

:回源URI改寫

更新時間:Apr 09, 2025

阿里雲DCDN支援在使用者請求需要回源時進行URI改寫,改寫不影響DCDN的內部鏈路和緩衝key,只會在DCDN節點向來源站點發送回源請求的時候使用改寫後的URL。通過本文您可以瞭解改寫回源URL功能的操作步驟。

適用情境

來源站點的資源路徑發生了變更,客戶來源站點的資源存放路徑發生了變更,但是使用者請求URL裡麵包含的資源路徑沒有變更,這時就需要DCDN節點來改寫回源請求裡面的資源路徑。

例如:圖片檔案原先存放在目錄“/download/”,現在變更為“/image/”。

工作原理

通過改寫回源URI規則,使請求URI與來源站點URI匹配,準確擷取來源站點的資源,或者傳遞指定的參數給來源站點。

  • 執行規則設定為“空”或者“break”的情況下,僅改寫URI中的資源路徑部分。

    image

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

    zh-enhance_break

注意事項

  • 單個網域名稱可以配置的回源URI改寫規則數量上限是50個。

  • 規則改寫按照規則列表從上到下順序執行的,此順序可能會影響您的改寫結果。

  • 回源URI改寫功能與重寫功能的區別在於,重寫功能的作用位置是在DCDN邊緣節點上面,會影響DCDN內部鏈路,也會改寫緩衝key,而回源URI改寫功能的作用位置是在DCDN回源節點上面,不影響DCDN內部鏈路,不改寫緩衝key。

  • 回源URI改寫功能在配置執行規則的情況下,對URL中參數的改寫可能會與網域名稱管理 > 效能最佳化頁簽下的過濾參數功能相衝突,同時配置的時候,需要注意避免配置衝突。

配置回源URI

  1. 登入DCDN控制台

  2. 在左側導覽列,單擊域名管理

  3. 域名管理頁面,找到目標網域名稱,單擊操作列的配置

  4. 在指定網域名稱的左側導覽列,單擊回源配置

  5. 單擊回源URI改寫頁簽。

  6. 回源URI改寫頁簽,單擊添加

  7. 根據您的需求,配置需要改寫的URI、目標URI和執行規則。

    改寫回源URI

    參數

    樣本

    說明

    需要改寫的URI

    ^/hello$

    以正斜線(/)開頭的URI,不含http://頭及網域名稱。必須使用PCRERegex。

    目標URI

    /hello/test

    以正斜線(/)開頭的URI,不含http://頭及網域名稱。支援使用PCRERegex。

    執行規則

    如果配置了多條規則,在匹配執行當前規則後,按照從上到下順序依次執行可以匹配的所有規則。

    break

    • 如果配置了多條規則,若請求的URI匹配了當前規則,匹配執行完當前規則後,剩餘規則將不再匹配。

    • 只修改URI中的資源路徑部分,不修改URL的參數,不影響改寫回源參數功能對URL中參數的改寫。

    enhance_break

    • 如果配置了多條規則,若請求的URI匹配了當前規則,匹配執行完當前規則後,剩餘規則將不再匹配。

    • 與break相似,但是增加了對URL中參數部分的改寫能力,對URL中參數的改寫可能會與改寫回源參數功能對URL中參數的改寫相衝突,這兩個功能同時配置的時候,需要注意避免配置衝突。

  8. 單擊確定,使改寫規則開始執行和生效。

    您也可以在回源URI改寫頁面的規則列表中,單擊修改刪除,對當前配置的規則進行相應操作。

配置樣本

  • 範例一:執行空規則。

    待改寫URI

    ^/hello$

    目標URI

    /index.html

    執行規則

    結果說明

    原始請求:http://aliyundoc.com/hello

    改寫後的回源請求:http://aliyundoc.com/index.html

    該請求將會繼續匹配回源URI改寫規則列表中其餘的規則。

  • 範例二:執行break規則。

    待改寫URI

    ^/hello.jpg$

    目標URI

    /image/hello.jpg

    執行規則

    break

    結果說明

    原始請求:http://example.com/hello.jpg

    改寫後的回源請求:http://example.com/image/hello.jpg

    該請求將不再繼續匹配回源URI改寫規則列表中其餘的規則。

  • 範例三:執行enhance break規則。

    待改寫URI

    ^/hello.jpg?code=123$

    目標URI

    /image/hello.jpg?code=321

    執行規則

    enhance break

    結果說明

    原始請求:http://example.com/hello.jpg?code=123

    改寫後的回源請求:http://example.com/image/hello.jpg?code=321

    該請求將不再繼續匹配回源URI改寫規則列表中其餘的規則。

  • 範例四:在檔案名稱是變數的情況下對根目錄添加URI首碼。

    例如:將包含/xxx的URI(xxx代表任意檔案名稱,例如:/hello.jpg、/hello.html等等)改寫為/image/xxx,即對根目錄下的任意檔案的URI都插入路徑/image。

    待改寫URI

    ^(.*)$

    說明

    ^(.*)$代表任一字元,()代表的是一個分組,可以在目標URI中通過$1來調用分組的變數內容。

    目標URI

    /image$1

    說明

    $1表示Regex中第一對圓括弧中的運算式匹配到的內容,$2是第二個小括弧裡面的內容,依此類推。

    執行規則

    break

    結果說明

    • 原始請求:http://example.com/hello.jpg

      改寫後的回源請求:http://example.com/image/hello.jpg

    • 原始請求:http://example.com/hello.html

      改寫後的回源請求:http://example.com/image/hello.html

    該請求將不再繼續匹配回源URI改寫規則列表中其餘的規則。

  • 範例五:在檔案名稱是變數的情況下對指定目錄添加URI首碼。

    例如:將包含/live/xxx的URI(xxx代表任意檔案名稱,例如:/live/hello.jpg、/live/hello.html 等等)改寫為/image/live/xxx,即對目錄/live下的任意檔案的URI都插入路徑/image。

    待改寫URI

    ^/live/(.*)$

    目標URI

    /image/live/$1

    執行規則

    break

    結果說明

    • 原始請求:http://example.com/live/hello.jpg

      改寫後的回源請求:http://example.com/image/live/hello.jpg

    • 原始請求:http://example.com/live/hello.html

      改寫後的回源請求:http://example.com/image/live/hello.html

    該請求將不再繼續匹配回源URI改寫規則列表中其餘的規則。

  • 範例六:匹配多條規則時,執行空規則。

    配置兩條規則如下圖所示:配置

    結果說明:

    • 原始請求: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規則。

      配置兩條規則如下圖所示:配置

      結果說明:

      • 原始請求:http://example.com/image_01.png

      • 改寫後的回源請求:http://example.com/image_02.png

        說明

        先匹配第一條規則,改寫為http://example.com/image_02.png,由於第一條規則設定為break,所以不再匹配後續規則。

相關文檔

大量設定加速網域名稱