重寫策略提供修改請求URI的能力。您可以通過配置重寫策略來修改經過自訂網域名到達您函數的請求URI。本文介紹重寫入模式以及如何通過Function Compute控制台為您的自訂網域名配置重寫策略。
背景資訊
Function Compute中,重寫策略只支援修改URI中的path
和query
,不支援修改scheme
、host
、port
和fragment
。
在Function Compute中,您可以通過配置自訂網域名的重寫策略,實現對函數請求URI的重寫。
重寫入模式
自訂網域名支援路由層級的重寫,並且支援精確重寫、萬用字元重寫和正則重寫三種重寫入模式。
精確重寫
精確重寫是指當您請求中的path
與匹配規則完全符合時,使用替換規則中的字串替代path
。例如,匹配規則為/old
,替換規則為/new
,對於請求/old
,經過重寫後被替換為/new
。更多樣本,如下所示。
匹配規則 | 替換規則 | 原始URI | 重寫後URI |
/old | /new | /old | /new |
/test/old | 不匹配 | ||
/serviceName.Qualifier | /serviceA | /serviceName.Qualifier | /serviceA |
萬用字元重寫
萬用字元重寫提供了一種簡單的匹配方式,可以滿足您大多數需求。
萬用字元重寫使用萬用字元(*)來匹配任一字元串,並且可以在替換規則中根據萬用字元出現的順序對萬用字元匹配的字串進行引用。例如,匹配規則為/api/*
,替換規則為/$1
,對於請求/api/getFunctionName
,經過重寫後被替換為/getFunctionName
。更多樣本,如下所示。
*
和^
具有特殊含義,其餘字串則作為一般字元串進行匹配處理。*
表示匹配任一字元串。^
表示從字串的開始位置進行匹配。
匹配規則 | 替換規則 | 原始URI | 重寫後URI |
/old | /new | /old | /new |
/test/old | /new | ||
^/old | /new | /old | /new |
/test/old | 不匹配 | ||
/api/* | /$1 | /api/getFunctionName | /getFunctionName |
/api/getFunctionName&Version=1 | /getFunctionName&Version=1 | ||
/css/* | /public/static/css/$1 | /css/style.css | /public/static/css/style.css |
/ServiceName/*/FunctionName/*/Qualifier/* | /$1.$3/$2 | /ServiceName/svc-a/FunctionName/func-a/Qualifier/1 | /svc-a.1/func-a |
/f..c | /helloworld | /f..c | /helloworld |
/func | 不匹配 |
正則重寫
正則重寫入模式中,匹配規則和重寫規則遵守標準的Regex。關於Regex的規範,請參見Regex文法。關於正則重寫匹配的樣本,如下所示。
匹配規則 | 替換規則 | 原始URI | 重寫後URI |
^/old/[a-z]+/ | /new | /old/ab/ | /new |
/test/a-b/ | 不匹配 | ||
^/api/.+?/(.*) | /api/v2/$1 | /api/v1/test | /api/v2/test |
/api/v1-pre/test | /api/v2/test |
匹配順序和優先順序
三種匹配模式的優先順序由高到低依次為:精確重寫→萬用字元重寫→正則重寫。
Function Compute支援在一條路由規則下配置多條重寫策略,因此,一條請求有可能匹配多個重寫策略。當一條請求同時匹配相同重寫入模式的多條重寫策略時,Function Compute會按照您的策略順序依次對請求進行匹配,直到遇到第一個可以成功匹配的策略,則按照該策略進行替換,其餘策略不再繼續匹配。
var rule1 = &WildcardRules{
Match: "/api/v1/*",
Replacement: "/api/v2/$1",
}
var rule2 = &WildcardRules{
Match: "/api/*/*",
Replacement: "/api/v3/$2",
}
- 如果使用者的重寫策略為[rule1, rule2],那麼對於請求
/api/v1/getFunctionName
會被重寫為/api/v2/getFunctionName
。 - 如果使用者的重寫策略為[rule2, rule1],那麼對於請求
/api/v1/getFunctionName
會被重寫為/api/v3/getFunctionName
。
前提條件
操作步驟
您可以在建立自訂網域名的同時配置重寫策略,也可以為已有自訂網域名配置重寫策略。
建立自訂網域名時配置重寫策略
- 登入Function Compute控制台,在左側導覽列,選擇 。
- 在頂部功能表列,選擇地區,然後在網域名稱管理頁面,單擊添加自訂網域名。
- 在添加自訂網域名頁面,填寫網域名稱,然後單擊配置項路由配置右側的重寫策略。
- 在配置重寫策略面板,單擊+添加重寫策略,配置相關策略後單擊確定。
為已有自訂網域名配置重寫策略
- 登入Function Compute控制台,在左側導覽列,選擇 。
- 在網域名稱管理頁面,單擊目標自訂網域名右側操作列的編輯。
- 在配置重寫策略面板,單擊+添加重寫策略,配置相關策略後單擊確定。