為了避免在資料移轉或檔案不存在等情境下,用戶端訪問 OSS 時因 404 錯誤而中斷,可以通過配置重新導向規則,讓 OSS 在滿足特定條件時返回 3xx 跳轉響應,將請求無縫引導至來源站點或其他指定頁面,從而保障業務的連續性和使用者體驗。
工作原理
重新導向功能的核心是用戶端跳轉(Client-Side Redirect)。當用戶端通過已綁定自訂網域名的 Bucket 訪問 OSS 時,若請求觸發了設定的規則條件(如 HTTP 404 錯誤),OSS 伺服器會向用戶端(如瀏覽器)返回一個HTTP 3xx狀態代碼(如 302)和一個包含新地址的Location回應標頭。用戶端接收到此響應後,會自動向Location指定的 URL 發起新請求。此過程 OSS 不代理擷取來源站點內容。
自訂404頁面
當 OSS 上的某個路徑或檔案發生特定錯誤時,可以將其重新導向到一個自訂的錯誤頁面或另一個業務處理頁面。例如,當通過自訂網域名訪問 Bucket 中任何檔案遇到404 Not Found錯誤時,用戶端將自動跳轉到一個統一的自訂錯誤頁面https://yourdomain/404.html。
步驟一:綁定自訂網域名
在建立重新導向規則之前,必須將一個自訂網域名綁定到 Bucket。重新導向功能僅對通過已綁定到 Bucket 的自訂網域名訪問生效。通過 OSS 標準網域名稱(http(s)://..aliyuncs.com)的訪問將不會觸發重新導向規則,而是返回400 Bad Request錯誤。
在Bucket 列表頁面,單擊目標 Bucket。
在左側導覽列,選擇Bucket 配置 > 網域名稱管理,然後單擊綁定網域名稱。
在綁定網域名稱面板,輸入自訂網域名(如果 Bucket 在中國內地需備案),例如
customdomain.com(請替換為自己的實際網域名稱)。根據提示完成 CNAME 解析配置,將自訂網域名解析到 OSS 提供的 CNAME 地址。
步驟二:建立重新導向規則
在左側導覽列,選擇資料管理 > 鏡像回源。
在鏡像回源頁面,單擊建立規則。
在建立規則面板,配置以下參數:
回源類型:選中重新導向。
回源條件:HTTP 狀態代碼設定為404。
回源地址:選中跳轉固定地址。
協議(第一列):選擇https。
網域名稱(第二列):輸入自訂錯誤頁面所在網域名稱,例如yourdomain.com。
路徑(第三列):輸入自訂錯誤頁面的路徑,例如404.html。
重新導向 Code:建議選擇 302 或 307。由於是錯誤頁面跳轉,通常不建議使用 301 永久重新導向。
單擊確定。
步驟三:驗證規則
將以下curl命令中的customdomain替換為Bucket綁定的自訂網域名,然後訪問一個不存在的對象。
curl -I "http://customdomain.com/does-not-exist.html"預期將返回 302 狀態代碼和正確的 Location 頭。
HTTP/1.1 302 Found
Server: AliyunOSS
Date: Wed, 03 Sep 2025 07:25:01 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 68B7ED4D949F8A38365CC014
Location: https://yourdomain.com/404.html資料無縫遷移
當將資料從來源站點(如自建 IDC)逐步遷移至 OSS 時,部分對象可能尚未同步。直接存取這些不存在的對象會導致404 Not Found錯誤,影響商務持續性。通過配置重新導向規則,可以在訪問 OSS 遇到特定 HTTP 錯誤(如 404)時,向用戶端返回一個 3xx 跳轉響應,引導用戶端無縫跳轉至來源站點地址擷取內容。此功能常用於資料平滑遷移的過渡階段。例如,當通過自訂網域名訪問 Bucket 中examplefolder/目錄下尚未遷移的檔案時,用戶端將自動跳轉到舊來源站點https://yourdomain.com/下的對應路徑。
步驟一:綁定自訂網域名
在建立重新導向規則之前,必須將一個自訂網域名綁定到 Bucket。重新導向功能僅對通過已綁定到 Bucket 的自訂網域名訪問生效。通過 OSS 標準網域名稱(http(s)://..aliyuncs.com)的訪問將不會觸發重新導向規則,而是返回400 Bad Request錯誤。
在Bucket 列表頁面,單擊目標 Bucket。
在左側導覽列,選擇Bucket 配置 > 網域名稱管理,然後單擊綁定網域名稱。
在綁定網域名稱面板,輸入自訂網域名(如果 Bucket 在中國內地需備案),例如
customdomain.com(請替換為自己的實際網域名稱)。根據提示完成 CNAME 解析配置,將自訂網域名解析到 OSS 提供的 CNAME 地址。
步驟二:建立重新導向規則
在左側導覽列,選擇資料管理 > 鏡像回源。
在鏡像回源頁面,單擊建立規則。
在建立規則面板,配置以下參數:
回源類型: 選中重新導向。
回源條件:
HTTP 狀態代碼設定為 404。
檔案名稱首碼: 設定為正在遷移的目錄,例如
examplefolder/。如果希望對整個Bucket生效,此項可留空。
回源地址:選中添加前尾碼。這是實現路徑無縫對應的關鍵,請勿選擇跳轉固定地址。
協議(第一列): 選擇舊來源站點支援的協議,例如https。
網域名稱(第二列): 輸入舊來源站點網域名稱,例如
yourdomain.com。路徑(第三列): 保持為空白。因為添加前尾碼模式會自動將使用者請求的路徑(如
examplefolder/file.jpg)拼接到網域名稱後面。
重新導向 Code: 選擇 302。302 是臨時重新導向,非常適合資料移轉這類過渡性情境。請勿使用 301。301是永久重新導向,會被瀏覽器和CDN強緩衝,一旦設定,即使後續檔案已遷移到OSS,訪問仍可能被強制跳轉到舊來源站點,極易引發生產事故。
單擊確定。
步驟三:驗證規則
將以下curl命令中的customdomain替換為Bucket綁定的自訂網域名,然後訪問一個不存在的對象。
curl -I "http://customdomain.com/examplefolder/does-not-exist.html"預期將返回 302 狀態代碼和正確的 Location 頭。
HTTP/1.1 302 Found
Server: AliyunOSS
Date: Wed, 03 Sep 2025 08:28:21 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 68B7FC25107134303531344B
Location: https://yourdomain.com/examplefolder/does-not-exist.html步驟四:資料移轉與切換
遷移完成後,驗證 OSS 中的資料完整性。
逐步縮小重新導向規則的生效範圍(例如,僅針對仍未遷移的特定子目錄)或直接禁用規則,最終將流量完全切換至 OSS。
配額與限制
生效網域名稱:規則僅對已綁定到 Bucket 的自訂網域名的訪問生效,對 OSS 標準網域名稱(Bucket Endpoint)不生效。
規則數量:每個 Bucket 最多支援配置 20 條規則。OSS 會根據規則編號(RuleNumber)從小到大依次匹配請求。一旦請求命中某條規則,後續規則將不再執行。
匹配邏輯:檔案首碼和尾碼的匹配為大小寫敏感,且不支援萬用字元。當配置多條規則時,必須設定不同的檔案名稱首碼或尾碼以作區分。
常見問題
規則已配置,但訪問依然是 404/403,未發生跳轉?
請按以下順序排查:
檢查訪問網域名稱:確認是否使用了已綁定到 Bucket 的自訂網域名進行訪問,而不是 OSS 標準網域名稱。使用 OSS 標準網域名稱將導致
400 Bad Request錯誤。檢查 Bucket 許可權與狀態代碼:如果 Bucket 是私人許可權,訪問不存在的對象通常返回
403 Forbidden。請確認規則中是否包含了對403狀態代碼的觸發條件。檢查規則優先順序:確認是否有其他編號更靠前的規則優先命中了該請求。
跳轉後的 URL 中出現雙斜杠(//)?
這通常是由於路徑拼接不當導致。請檢查檔案名稱首碼和替換首碼(若使用)的配置。例如,若檔案名稱首碼為path/,則替換後的首碼應為new-path,而不是/new-path,以避免與網域名稱後的/重複。
修改了重新導向規則但未生效?
如果之前使用了301(永久重新導向),瀏覽器或 CDN 節點可能會強緩衝舊的跳轉規則。請嘗試清除瀏覽器緩衝、強制重新整理 CDN 緩衝,或使用瀏覽器的隱藏/無痕模式進行測試。
訪問時陷入了無限迴圈重新導向?
請檢查重新導向目標地址。確保目標地址不會直接或間接地再次指向一個會觸發 OSS 重新導向規則的 URL。特別是在使用 CDN 跟隨跳轉模式時,要檢查 CDN 的回源配置是否錯誤地將請求又發回了 OSS 的自訂網域名。
如何排查命中了哪條規則?
目前 OSS 訪問日誌中不直接包含命中重新導向規則的識別欄位。建議通過逐步縮小規則範圍或臨時禁用其他規則的方式進行排查。也可以在用戶端捕獲3xx響應中的Location頭來判斷重新導向是否按預期發生。