如果來源站點資源的存放路徑發生變化,而使用者請求的 URL 保持不變,您可以在邊緣安全加速 ESA節點上配置請求重新導向規則,將使用者請求的 URL 重新導向至目標 URL,從而減少回源請求,提高用戶端訪問效能。
功能介紹
請求重新導向的工作流程如下:
使用者在用戶端發起資源訪問請求。
ESA節點匹配重新導向規則後,向用戶端返回重新導向狀態代碼(如 301 或 302),並在 HTTP 回應標頭中攜帶目標 URL。
用戶端收到響應後,根據回應標頭中的 Location 欄位向新的 URL 發起請求,完成資源訪問。
支援的重新導向狀態代碼及應用情境
狀態代碼 | 含義 | 處理方法 | 典型應用情境 |
301 | 永久重新導向(Moved Permanently) | GET 方法不變,其他方法可能變更為 GET。 | 請求資源已永久移動到 Location 頭部指定的新 URL,搜尋引擎會更新連結。 |
302 | 臨時重新導向(Found) | GET 方法不變,其他方法可能變更為 GET。 | 頁面暫時不可用,搜尋引擎不會更新連結。 |
303 | 臨時重新導向(See Other) | GET 方法不變,其他方法會強制變更為 GET(訊息主體丟失)。 | 用於 PUT 或 POST 請求完成後的頁面跳轉,避免頁面重新整理導致重複操作。 |
307 | 臨時重新導向(Temporary Redirect) | 方法和訊息主體都不變。 | 頁面暫時不可用,當網站支援非 GET 方法的連結或操作時,該狀態代碼優於 302。 |
308 | 永久重新導向(Permanent Redirect) | 方法和訊息主體都不變。 | 永久遷移資源,強制用戶端保留原始要求方法和請求體,適用於網站重構或 API 遷移等需要保持語義一致性的情境。 |
關於非 GET 請求的注意事項
若需對 API 介面或 POST、PUT 等非 GET 請求進行重新導向,且需保留原始要求方法和請求體(Body),請選擇 307(臨時重新導向)或 308(永久重新導向)狀態代碼。使用 301 或 302 時,部分用戶端會將非 GET 請求自動轉換為 GET 請求,可能導致請求體資料丟失。
建議避免對上傳類大流量路徑(如
/api/upload)配置重新導向,否則可能因重新導向導致回源流量異常。如需處理此類路徑,建議將上傳介面拆分至獨立網域名稱,或通過 WAF 規則進行攔截。
操作步驟
新增請求重新導向規則後,當使用者發起資源訪問請求時,ESA將按照規則的生效優先順序依次匹配並執行,返回相應結果。
在ESA控制台選擇網站管理,在網站列單擊目標網站。
在左側導覽列,選擇。單擊新增規則。
在新增重新導向規則頁面,填寫以下配置項後單擊確定:
規則名稱:自訂規則名,如
my-rule傳入請求類型:設定要匹配的使用者請求特徵,如
主機名稱 等於 www.example.com也可以直接編輯運算式,如 (http.host eq "www.example.com")
單一重新導向:
參數
類型
說明
類型
靜態
適用於需要重新導向到固定 URL,例如:URL填寫
https://test.example.com/image/1.jpg?test=123。動態
適用於需要動態修改URL,可設定為一個運算式,例如需要
將使用者請求 URL 中的主機名稱替換為新網域名稱,路徑保持不變可配置:運算式為concat("https://www.example.com", http.request.uri.path)。狀態代碼
配置重新導向的響應狀態代碼:301(預設)、302、303、307 和 308。詳細說明請參見支援的重新導向狀態代碼及應用情境。
保留查詢字串
是否攜帶原查詢參數至目標 URL,預設關閉,即重新導向後不攜帶原請求的查詢參數。
開啟保留查詢字串後:
使用者請求 URL 攜帶查詢字串時,覆蓋重新導向 URL 中的查詢字串。
使用者請求 URL 未攜帶查詢字串時,使用重新導向 URL 中的查詢字串。
詳細配置樣本請參見配置樣本。
動態重新導向目標 URL 常用運算式
情境 | 運算式樣本 |
保留原始路徑跳轉(如非 www 跳 www、HTTP 跳 HTTPS) |
|
去除或替換路徑首碼(如將 |
|
使用動態重新導向時,須在重新導向類型中選擇動態,並在目標 URL 輸入框中填寫合法的運算式文法。若直接填寫含變數名稱的一般字元串(非合法運算式),系統將無法解析,導致儲存失敗。
配置樣本
靜態重新導向樣本
情境 1:請求無查詢字串,重新導向 URL 有查詢字串
請求是否攜帶查詢字串:否
重新導向 URL 是否攜帶查詢字串:是
保留查詢字串配置:開啟或關閉
使用者請求 URL 樣本:
http://test.example.com/1.jpg配置的重新導向 URL 樣本:
http://test.example.com/image/1.jpg?test=123實際重新導向 Location 樣本:
http://test.example.com/image/1.jpg?test=123說明:原始請求無查詢參數時,無論保留查詢字串配置是否開啟,最終 Location 均保留配置 URL 的查詢字串。
情境 2:請求和重新導向 URL 均有查詢字串,保留查詢字串開啟
請求是否攜帶查詢字串:是
重新導向 URL 是否攜帶查詢字串:是
保留查詢字串配置:開啟
使用者請求 URL 樣本:
http://test.example.com/1.jpg?test=321配置的重新導向 URL 樣本:
http://test.example.com/image/1.jpg?test=123實際重新導向 Location 樣本:
http://test.example.com/image/1.jpg?test=321說明:保留查詢字串開啟時,僅保留原始請求的查詢字串,忽略配置 URL 的查詢參數。
情境 3:請求和重新導向 URL 均有查詢字串,保留查詢字串關閉
請求是否攜帶查詢字串:是
重新導向 URL 是否攜帶查詢字串:是
保留查詢字串配置:關閉
使用者請求 URL 樣本:
http://test.example.com/1.jpg?test=321配置的重新導向 URL 樣本:
http://test.example.com/image/1.jpg?test=123實際重新導向 Location 樣本:
http://test.example.com/image/1.jpg?test=123說明:保留查詢字串關閉時,僅保留配置 URL 的查詢字串,忽略原始請求的查詢參數。
情境 4:請求有查詢字串,重新導向 URL 無查詢字串,保留查詢字串開啟
請求是否攜帶查詢字串:是
重新導向 URL 是否攜帶查詢字串:否
保留查詢字串配置:開啟
使用者請求 URL 樣本:
http://test.example.com/1.jpg?test=321配置的重新導向 URL 樣本:
http://test.example.com/image/1.jpg實際重新導向 Location 樣本:
http://test.example.com/image/1.jpg?test=321說明:保留查詢字串開啟時,自動將原始請求的查詢字串附加到配置 URL(即使配置 URL 無查詢參數)。
情境 5:請求有查詢字串,重新導向 URL 無查詢字串,保留查詢字串關閉
請求是否攜帶查詢字串:是
重新導向 URL 是否攜帶查詢字串:否
保留查詢字串配置:關閉
使用者請求 URL 樣本:
http://test.example.com/1.jpg?test=321配置的重新導向 URL 樣本:
http://test.example.com/image/1.jpg實際重新導向 Location 樣本:
http://test.example.com/image/1.jpg說明:保留查詢字串關閉時,直接丟棄原始請求的查詢字串,僅返回配置 URL。
動態重新導向樣本
情境 1:保留查詢字串關閉
保留查詢字串配置:關閉
使用者請求 URL 樣本:
https://test.example.com/image/1.jpg?test=123函數運算式:
concat("https://www.example.com", http.request.uri.path)實際重新導向 Location 樣本:
https://www.example.com/image/1.jpg說明:
配置關閉時,僅保留路徑部分(
/image/1.jpg),忽略原始請求的查詢字串(?test=123)。函數運算式僅拼接網域名稱和路徑,不處理查詢參數。
情境 2:保留查詢字串開啟
保留查詢字串配置:開啟
使用者請求 URL 樣本:
https://test.example.com/image/1.jpg?test=123函數運算式:
concat("https://www.example.com", http.request.uri.path)實際重新導向 Location 樣本:
https://www.example.com/image/1.jpg?test=123說明:
配置開啟時,自動將原始請求的查詢字串附加到產生的 URL(即使函數運算式未顯式處理查詢參數)。
函數運算式僅處理路徑拼接,查詢字串由系統根據配置自動追加。
情境 3:wildcard_replace 函數樣本(保留查詢字串開啟)
保留查詢字串配置:開啟
使用者請求 URL 樣本:
https://www.example.com/image-flower-20250816-1.html?src=cdn函數運算式:
wildcard_replace(http.request.full_uri, "https://www.example.com/image-*", "https://www.example.com/${1}")實際重新導向 Location 樣本:
https://www.example.com/flower-20250816-1.html?src=cdn說明:
配置開啟時,系統會自動將原始請求中的查詢字串(如
?src=cdn)附加到函數運算式產生的目標 URL 末尾。函數運算式本身只需關注路徑的重寫與拼接,無需顯式處理查詢參數,查詢字串由系統根據配置自動透傳。
情境 4:wildcard_replace 函數樣本(保留查詢字串關閉)
保留查詢字串配置:關閉
使用者請求 URL 樣本:
https://www.example.com/index.html?place=garden&date=20250816函數運算式:
wildcard_replace(http.request.full_uri, "https://www.example.com/index.html?place=garden&date=*", "https://www.example.com/flower-${1}-1.html")實際重新導向 Location 樣本:
https://www.example.com/flower-20250816-1.html說明:
配置關閉時,系統不會自動保留原始請求的查詢字串。目標 URL 完全由函數運算式產生,原始參數(如
place=garden)僅用於匹配規則,其中*匹配date後的值並作為${1}參與重寫。最終跳轉 URL 不包含原始查詢參數,符合預期的靜態化跳轉邏輯。
常見問題
如何?根網域名稱(裸網域名稱)與 www 網域名稱之間的相互跳轉?
根據接入情境不同,選擇以下方案:
情境 1:根網域名稱和 www 網域名稱均已通過 CNAME 或 NS 接入 ESA
在 ESA 中配置對應主機名稱的重新導向規則,實現根網域名稱與 www 網域名稱的相互跳轉。即使已配置重新導向,被重新導向的源網域名稱也需保留 CNAME 記錄,以確保 ESA 能識別該網域名稱的流量。
情境 2:根網域名稱存在 MX 記錄,無法配置 CNAME(DNS 衝突)
建議使用 DNS 服務商提供的 URL 轉寄功能。該方式僅支援 HTTP 協議,流量不經過 ESA,無法享受 ESA 的安全防護和加速能力。
若此前已在 DNS 配置了 URL 轉寄記錄,改用 ESA 重新導向前需先刪除該記錄並添加 ESA CNAME,否則 ESA 規則不會生效。
配置重新導向規則後未生效或跳轉錯誤怎麼辦?
請按以下步驟逐一排查:
檢查匹配條件覆蓋範圍:確認規則匹配條件是否覆蓋了使用者實際訪問的網域名稱。例如:若僅配置了 www 網域名稱規則,使用者訪問裸網域名稱時規則不生效,需補充裸網域名稱規則或使用萬用字元匹配。
確認網域名稱已通過 CNAME 或 NS 接入 ESA:ESA 重新導向要求網域名稱流量經過 ESA 節點。若網域名稱僅在來源站點配置了跳轉,或依賴 DNS URL 轉寄,流量不經過 ESA,規則將不生效。
檢查規則優先順序:確認是否存在更高優先順序的規則覆蓋了當前重新導向規則。請參見規則的生效優先順序瞭解規則匹配順序。
驗證動態運算式文法:若使用動態重新導向,請確認運算式文法正確,拼接目標 URL 須使用
concat函數,不能直接填寫含變數的一般字元串。
配置重新導向後出現死迴圈或網站無法訪問怎麼辦?
請按以下步驟排查並修複:
檢查是否存在迴圈配置:若 www 網域名稱的回源地址指向根網域名稱,同時又配置了根網域名稱到 www 的重新導向規則,將形成無限迴圈。請將來源站點地址還原為真實 IP 或原始來源站點網域名稱。
HTTP 跳 HTTPS 建議使用專用功能:ESA 控制台提供強制 HTTPS配置項,優先使用該功能代替手動設定重新導向規則,可有效避免規則衝突引發的迴圈跳轉。
重新整理緩衝:若瀏覽器或 CDN 緩衝了舊的重新導向響應導致問題持續,請在 ESA 控制台重新整理相關緩衝後重新驗證。
檢查規則匹配範圍:確認重新導向規則的匹配條件未意外覆蓋健全狀態檢查路徑或其他特殊路徑,避免誤匹配導致服務不可用。
如何根據裝置類型(如手機端)或請求特徵配置條件重新導向?
在重新導向規則的傳入請求類型匹配條件中,可基於要求標頭(如 User-Agent)設定判斷:
匹配方式選擇"包含":User-Agent 通常為較長字串,建議使用"包含"而非"等於"進行匹配,以相容不同裝置和瀏覽器的 User-Agent 格式。
手機端跳轉配置樣本:
匹配條件:
User-Agent 包含 Mobile,或User-Agent 包含 Android/iPhone執行動作:設定為 302 臨時重新導向至移動端專屬網域名稱(如
https://m.example.com)
多條件組合:可結合路徑、查詢參數等多個匹配條件實現精細化跳轉控制,例如僅對特定頁面的手機端流量執行重新導向。
為什麼配置了重新導向規則但瀏覽器地址欄 URL 沒有變化?
這通常是將 URL 重寫與請求重新導向混淆所致,兩者區別如下:
請求重新導向:ESA 向用戶端返回 3xx 狀態代碼,瀏覽器自動跳轉至目標 URL,地址欄中的 URL 將發生改變。
URL 重寫:ESA 僅修改回源請求路徑(透明代理),瀏覽器地址欄 URL 保持不變。
若需保持地址欄 URL 不變僅修改回源路徑,請使用 URL 重寫功能;若需瀏覽器跳轉並改變地址欄 URL,請使用請求重新導向功能。
若網站的加速地區不包含中國內地,中國內地使用者訪問時可能無法享受 ESA 加速效果,請根據業務需求合理配置加速地區。
不同套餐的支援情況
功能項 | Entrance | Pro | Premium | Enterprise |
規則條數 | 10條 | 25條 | 50條 | 125條 |
相關文檔
規則相關的功能,在生效優先順序、可重新進入性、生效顆粒度上存在差異,詳細情況請查看規則相關功能的特性說明。