如果客戶端實際請求的URL與CDN節點上緩存資源的URL不匹配,可通過訪問URL改寫功能,將請求URL重定向到目標Path。
背景信息
HTTP 302狀態碼(即302 Found),可表示資源被臨時改變了位置。配置訪問URL改寫后,CDN節點會在給客戶端發送的302狀態碼響應信息的HTTP Location頭部中放置新的URL地址信息,客戶端收到302狀態碼響應之后,將會向新的URL地址發起請求。
配置訪問URL改寫規則后,CDN節點默認給客戶端發送302重定向狀態碼,同時也支持303和307重定向狀態碼。
編碼 | 含義 | 處理方法 | 典型應用場景 |
302 | Found | GET方法不會發生變更,其他方法有可能會變更為GET方法。 | 由于不可預見的原因該頁面暫不可用。在這種情況下,搜索引擎不會更新它們的鏈接。 |
303 | See Other | GET方法不會發生變更,其他方法會變更為 GET 方法(消息主體會丟失)。 | 用于PUT或POST請求完成之后進行頁面跳轉,防止由于頁面刷新導致的操作的重復觸發。 |
307 | Temporary Redirect | 方法和消息主體都不發生變化。 | 由于不可預見的原因該頁面暫不可用。在這種情況下,搜索引擎不會更新它們的鏈接。當站點支持非 GET 方法的鏈接或操作的時候,該狀態碼優于 302 狀態碼。 |
單個域名最多可以配置50條重寫規則。配置多條規則時,按照視頻點播控制臺訪問URL改寫列表由上而下的順序執行。
適用場景
客戶源站的資源存放路徑發生了變更,CDN節點上的資源存放路徑也發生了變更,但是用戶請求URL里面包含的資源路徑沒有變更,這時就需要CDN節點來改寫用戶請求里面的資源路徑。例如:圖片文件原先存放在目錄“/download/”,現在變更為“/image/”。
操作步驟
登錄視頻點播控制臺。
在左側導航欄選擇配置管理 > 分發加速配置 > 域名管理,進入到域名管理頁面。
單擊目標域名所在行的配置。
在指定域名的左側導航欄,單擊緩存配置。
單擊訪問URL改寫頁簽。
單擊添加,根據您的實際需求,配置訪問URL改寫參數。
參數
說明
待改寫的Path
以正斜線(/)開頭的URL,不含http://頭及域名。支持PCRE正則表達式,例如:^/hello$。
目標Path
以正斜線(/)開頭的URL,不含http://頭及域名,例如:/index.html。
執行規則
默認支持Redirect和Break這兩種規則。
Redirect:如果請求URL匹配了某條規則,該請求將會被302重定向到目標URL, CDN節點返回給客戶端的Location信息為目標URL(不修改原始URL中的參數)。執行完當前規則后,當存在其他配置規則時,會繼續匹配剩余規則。
Break:如果請求URL匹配了某條規則,該請求將會被改寫為目標URL(不修改原始URL中的參數)。執行完當前規則后,當存在其他配置規則時,將不再匹配剩余規則。
同時支持空、enhance-break和enhance_redirect三種規則,這三種規則需要提交工單申請后臺配置。
空 : 配置了多條規則的情況下,如果請求URL匹配了某條規則,執行完當前規則以后,還會繼續匹配后續規則。
enhance_break : 和 break類似,但是會修改包含參數在內的整個URL。
enhance_redirect : 和redirect類似,但是會修改包含參數在內的整個URL。
說明不同的執行規則使用的改寫方式不同,改寫后的URL是否支持其他域名、其他協議也存在差異:
空、Break、enhance_break采用直接改寫用戶請求URL的方式,不支持改寫為其他域名,也不支持改寫為其他協議(例如從HTTP協議改寫為HTTPS協議)。
Redirect、enhance_redirect采用302跳轉方式實現URL改寫,支持改寫為其他域名,也支持改寫為其他協議:
302 Location地址除了可以設置為當前的加速域名,還支持設置為其他域名,可以實現這樣的效果:原始URL使用的域名是
example.com
,改寫后的URL使用新的域名aliyundoc.com
。302 Location地址支持使用其他協議,可以實現這樣的效果:原始URL使用HTTP協議,改寫后的URL使用HTTPS協議。
單擊確定,完成配置。
成功配置重寫功能后,您可以在重寫列表中,對當前的配置進行修改或刪除操作。
配置示例
訪問URL改寫規則按照正則表達式配置如下所示:
待改寫的Path:^/hello$
目標Path:/index.html
執行規則:Redirect
客戶端請求http://example.aliyundoc.com/hello
時,請求中包含/hello
,CDN節點會在302狀態碼的Location信息里寫入新的URL地址http://example.aliyundoc.com/index.html
,并返回給客戶端,客戶端對http://example.aliyundoc.com/index.html
發起請求。