返回列表

Azure帳號購買優惠 Azure CDN重定向規則怎麼寫

微軟雲Azure / 2026-08-27 15:17:34

Azure帳號購買優惠 第一章:先搞清楚你要的到底是哪一種「重定向」

很多人一開始做 Azure CDN 的重定向規則,會把三件事混在一起:重定向(redirect)、改寫(rewrite)、以及連同快取策略一起處理的行為。它們的核心差別在於「回應給用戶端的結果」以及「你把 URL 改成什麼樣」。先分清楚,才不會在後面一直猜為什麼不生效。

重定向:CDN 回應用戶端一個狀態碼(301/302/307/308 之類)和一個 Location。瀏覽器會再發起下一次請求到新網址。使用者看到的網址也可能變成新網址。

改寫:CDN 在「到來源站」之前把請求路徑調整,但用戶端地址通常不變。用戶端不會因為改寫而自動跳轉。

快取/回源行為:有些需求其實不是要跳轉,而是要讓特定路徑走不同快取規則或不同來源。

本篇文章重點放在你標題提到的「Azure CDN 重定向規則怎麼寫」:也就是讓 CDN 回應重定向,或用規則把請求引導到另一個路徑。

第二章:在開始寫規則前,先列出需求

重定向規則不是寫越多越好,而是把需求描述清楚。你至少要回答這些問題:

  • 要重定向哪些 URL? 例如只要重定向 /old/*,還是整站都要。
  • 匹配條件是什麼? 只看路徑?還是要看 query string?是否要根據 header 判斷?
  • 要改成什麼樣的目標? 目標是絕對網址、站內新路徑,還是保留原始路徑的一部分。
  • 要用哪個狀態碼? 301 表示永久移除(對 SEO 很重要);302/307/308 則影響快取與行為。
  • 目標是否需要保留 query 參數? 很多人會忘記保留,導致登入、追蹤、或前端路由出問題。

把需求寫成一句話,後面規則就會變得可落地。舉例:

「當使用者請求 https://example.com/legacy/* 時,把它 301 轉到 https://example.com/new/*,並保留原本的 query string。」

第三章:Azure CDN 重定向規則的基本思路

實務上你會在 CDN 設定某個「規則集」或「規則」中,建立:

  • 條件(Conditions):符合什麼請求才觸發。
  • 動作(Actions):觸發後做什麼事,例如 Redirect。
  • 狀態碼(Status code):301/302/307/308。
  • 目標(Destination):要跳到哪個網址或路徑。

雖然不同 CDN 服務(如 Azure Front Door、Azure CDN Standard from Verizon、或其他節點)在介面與細節上會有差異,但核心邏輯都一樣:先判斷,再決定回應。

下面用「可套用的規則寫法觀念」教你怎麼思考,避免你看到選項就直接亂填。

第四章:規則寫作模板(從簡單到複雜)

4.1 單一固定路徑:把 /old 替換成 /new

需求:使用者打到 /old,永遠改到 /new。

條件很簡單:匹配路徑等於 /old(通常要注意前導斜線)。動作選 Redirect,狀態碼可用 301。

目標網址:你可以寫成「站內路徑」或「完整網址」,依你介面支援。若要站內路徑,一般會像這樣:

  • 條件:Path equals '/old'
  • 動作:Redirect to '/new'
  • 狀態碼:301

這個例子成功後,你才有基礎理解整套邏輯。

4.2 路徑前綴重定向:/old/* → /new/*

這是最常見的遷移需求:把一整段路徑搬家。

需求:/old/blog/123 → /new/blog/123。

關鍵在於「要把被匹配的尾巴接回去」。所以你需要使用 CDN 規則的通配符或群組(不同平台叫法不同)。常見用法是:

  • 匹配:'/old/*'
  • 目標:'/new/*'(並確保 * 的部分被保留)

實務上你會遇到兩種狀況:

  • 如果你的目標沒有正確引用通配內容,跳到的可能只是一個固定路徑(例如永遠跳到 /new)。
  • 如果你的規則順序不對,某個更一般的規則先命中,導致專用規則根本沒機會執行。

因此建議你建立規則後立即做測試(下一章會教你怎麼測)。

4.3 以查詢參數為條件:當特定 query 才重定向

有時你只想在某些情境跳轉,例如:當 query 包含 token=xxx 才導向新流程;或舊版系統用特定參數觸發。

這類需求的寫法重點是:

  • 條件不只看 Path,也要看 Query 中的特定鍵值。
  • 重定向目標要決定是否「保留全部 query」或「只保留某些鍵」。

如果你的平台預設不保留 query,你就需要在 Redirect 目標中明確引用 query。反過來,如果平台預設保留,你也要確保沒有重複拼接導致兩次參數。

建議你在測試時特別用兩種 URL 驗證:

  • 沒有 query 的版本
  • 有完整 query 的版本

避免上線後才發現某些行為依賴 query。

4.4 301 vs 302/307:選錯會怎樣

狀態碼並不是形式問題。它會影響:

  • 瀏覽器與中介快取是否會記住你的跳轉結果
  • 搜尋引擎如何理解「永久搬遷」
  • 某些 HTTP 方法(POST/PUT)在 302/307/308 的行為差異

一般建議:

  • 站內網址永久改版:用 301
  • 短期導流或測試:用 302 或 307
  • Azure帳號購買優惠 保留方法語意:若涉及 POST/PUT,通常 307/308 更能維持行為一致

你不需要一次全懂,但要知道「你選的是什麼意圖」。如果你是做遷移,通常 301 比較符合 SEO 與使用者預期。

第五章:常見規則寫法錯誤(以及怎麼避開)

5.1 忘記規則順序:上游規則搶先命中

很多 CDN 都是「第一個匹配就執行」或「按優先順序判斷」。你可能寫得完全正確,但因為另一條更寬的規則先命中,結果你期待的重定向沒有發生。

Azure帳號購買優惠 解法:

  • 把最具體的規則放在前面(例如 /old/blog/* 比 /old/* 更具體)
  • 用命名與註解清楚每條規則的目的
  • 測試時用一個「會被具體規則命中的」URL

5.2 大小寫與斜線:/Old 與 /old 行為不一致

Azure帳號購買優惠 路徑匹配是否大小寫敏感,常常取決於底層規則引擎與平台設定。有些情境看起來「同一個路徑」其實會匹配不到。

解法:

  • 確認你的平台對 Path 比對是否區分大小寫
  • 若你無法確保一致,盡量把使用者輸入導向到同一個規範(例如強制小寫)

如果你做的是網站遷移,請記得測試:大小寫不同但語意相同的 URL。

5.3 遺失 query string:跳轉後登入或追蹤失效

這是最常見的實戰坑。你寫了重定向,但目標 URL 沒有包含 query,導致原本攜帶的參數丟失。

解法:

  • 確認平台預設是否保留 query
  • 如需保留,明確配置「保留全部 query」或引用必要參數
  • 測試至少包含兩種 query:空 query 與完整 query

5.4 形成重定向迴圈:/a → /b 且 /b → /a

迴圈不一定是你主動寫的,有時是兩個規則在不同條件下都會觸發,結果互相跳。

解法:

  • 在規則設計階段就畫出 URL 的轉換流程
  • 避免用過於寬的條件(例如只要包含某字就跳)
  • 測試時用「多跳前後」確認不會無限跳轉

第六章:一套你可以直接套用的實例(含測試方式)

下面用一個真實感很強的遷移案例,讓你看見「規則怎麼寫」以及「如何驗證」。

假設你把舊網站的內容路徑從:

/legacy/products/{slug}?ref=campaign

搬到:

/products/{slug}?ref=campaign

並且你希望:

  • 所有 /legacy/products/* 都用 301
  • 保留 query string(至少保留 ref 與其他參數)
  • 如果路徑不是 legacy/products,就不要處理

6.1 規則的條件(Condition)

你需要限制匹配範圍:只針對 /legacy/products/ 開頭的路徑。若平台支援通配符或路徑參數,就用它。

  • 條件:Path 前綴 equals '/legacy/products/'(或使用 '/legacy/products/*')

這樣就能避免對 /legacy/other/* 之類的路徑誤傷。

6.2 規則的動作(Action):重定向目標如何寫

你要把尾巴接到 /products/。

  • Azure帳號購買優惠 目標:'/products/{matched_tail}'

在大多數規則引擎裡,{matched_tail} 就是通配符或群組捕獲的部分。你需要確保目標 URL 的那段能引用到捕獲結果。

此外,query string 要保留。通常做法是:

  • 如果平台有「保留 query」選項:打開
  • 如果平台沒有:就需要在目標中加入 query 的引用模板

最終效果應該是:

  • 請求:/legacy/products/abc?ref=campaign&x=1
  • 回應:301 Location: /products/abc?ref=campaign&x=1

6.3 狀態碼的選擇

遷移通常用 301。因為你想告訴瀏覽器與搜尋引擎,舊路徑已永久移除,新路徑是正確答案。

如果你只是臨時導流,才改成 302 或 307。

6.4 實測:別只看「有沒有跳」,要看「跳到哪裡」

測試我建議用三組 URL:

  • 標準案例:/legacy/products/abc?ref=campaign&x=1
  • 只有必要 query:/legacy/products/abc?ref=campaign
  • 沒有 query:/legacy/products/abc

你需要檢查三件事:

  • 狀態碼是否正確(301)
  • Azure帳號購買優惠 Location 的路徑與參數是否正確
  • 是否有意外的重定向迴圈

如果你有辦法查看 CDN 的回應頭更好。否則用瀏覽器開發者工具也能看到。

第七章:更進階的需求:保留主機、改寫子網域、或改成絕對網址

當你做的不只是站內路徑搬遷,可能還會牽涉到子網域或完整網址。這時候最容易寫錯。

7.1 目標是站內路徑還是完整 URL?

如果你要把 /legacy 到新域名(例如把 example.com 搬到 newsite.com),你通常要寫完整 URL。

判斷方式:

  • Azure帳號購買優惠 只在同一個網域內搬路徑:寫站內路徑即可(例如 /products/abc)
  • 要換網域或換協定:寫完整目標(例如 https://newsite.com/products/abc)

站內路徑寫錯時,可能仍會跳到你原來的網域;而完整 URL 寫錯則可能造成跨網域跳轉失敗或導向錯誤。

7.2 保留原本的查詢參數:只保留部分參數

有些情況你不希望保留全部 query,例如來源參數太多、或其中某些參數不應暴露到新系統。這時你要選擇「白名單保留」。

作法通常是:

  • 目標 URL 只拼上你允許的 query 鍵
  • Azure帳號購買優惠 其他 query 不帶過去

這種寫法需要你非常確定新系統依賴哪些參數。否則你可能讓某些功能在新站不可用。

第八章:部署與除錯:讓規則真正上線可控

規則部署不是寫完就結束。你要讓它能被追蹤、能被回滾、能被快速定位。

8.1 分階段上線:先小範圍再擴大

不要一口氣把整個站的 /old/* 全部改好再等運氣。建議你:

  • 先用最小匹配範圍測通(例如只測 /legacy/products/abc)
  • 確認 Location、query、狀態碼都正常後,再擴到整個前綴
  • 最後才做更寬的規則(例如所有 /legacy/*)

8.2 使用日誌或觀測手段定位問題

重定向失敗通常不是「規則完全沒作用」,而是「匹配不對」或「目標拼接不對」。你需要能觀察:

  • 是否命中該規則
  • 重定向的目標 URL 是否如預期
  • 瀏覽器端是否仍有其他行為(例如前端路由)干擾

如果你的環境能看到 CDN 的請求日誌,優先用它。否則就以瀏覽器開發者工具為起點。

8.3 快取觀點:重定向也可能被快取影響

有些情況下,重定向回應會被快取或被瀏覽器緩存。你上線後立刻修改規則時,可能出現「看起來沒變」的錯覺。

你可以採取:

  • 用無快取的方式測試(例如使用隱私視窗或清除快取)
  • 理解 301 可能被更長時間記住;如果你正處於調整期,先用 302 或臨時狀態碼更安全

第九章:把規則寫得乾淨可維護,而不是堆疊

規則一多就會亂。想避免未來維護成本爆炸,你可以遵循幾個寫法準則:

  • 每條規則都只做一件事:例如只處理 /legacy/products/* 的遷移,不要同時處理 /legacy/blog/*。
  • 使用一致的命名:例如 RedirectLegacyProducts_301。
  • Azure帳號購買優惠 在條件上盡量具體:具體匹配既能避免誤傷,也更好除錯。
  • 避免重複規則:如果兩條規則效果相同,合併成一條。

尤其當你團隊協作時,清楚的規則結構就是對未來的投資。

第十章:常用規則清單(你可能很快就用得上)

下面整理一些常見模式,你可以把它們當成檢查清單。實際寫入時依你的 CDN 介面語法調整。

  • 固定重導:/old → /new(301/302)
  • 前綴重導:/old/* → /new/*(保留尾巴)
  • 限定 query:當 query 含某鍵值才重導
  • Azure帳號購買優惠 保留 query:Location 帶上原 query 或啟用保留選項
  • Azure帳號購買優惠 只保留部分 query:白名單拼接到目標
  • 避免迴圈:確認新目標不會被同一套規則再次命中

如果你把每一次需求都對應到其中一種模式,寫規則會快很多。

第十一章:最後的落地建議

你真的要掌握「Azure CDN 重定向規則怎麼寫」,關鍵不是記住某個按鈕長什麼樣,而是建立正確的思維流程:

  • 先定義要匹配哪些 URL,以及要怎麼命名結果(新路徑是什麼規則)。
  • 再確認狀態碼的意圖(永久還是臨時)。
  • 最後把 query 與規則順序當成高風險點重點測試。

當你做到這三點,就能把重定向規則從「猜測」變成「可預期的工程」。

結語:你可以從一條最簡單的重導開始

如果你現在還不確定怎麼寫,建議從最簡單的開始:先做 /old → /new 的 301。確認回應的狀態碼與 Location 正確,再把匹配擴成 /old/*,最後才處理 query 保留與條件判斷。這樣你每一步都能驗證,整個遷移就不會變成不可控的賭局。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系