本文档介绍如何在火山引擎内容分发网络(CDN)中配置 "回源 URL 改写"。该功能允许对 CDN 回源请求 URL 中的路径和查询参数进行改写。
在源站上,假设某些文件的 URL 或者 URL 的访问逻辑发生了变更。此时,有以下几种解决方案:
在源站配置 301 或 302 重定向,将内容的原 URL 重定向到新的 URL。同时,在 CDN 中启用 回源重定向跟跟随 功能。
不在源站做任何变更,而是在 CDN 中配置 URL 重定向改写 功能。如果用户请求了原 URL,CDN 会响应 301 或者 302 状态码,指示用户浏览器向新的 URL 发送请求。
不在源站做任何变更,而是在 CDN 配置 回源 URL 改写。如果用户请求了原 URL,CDN 在回源请求中会使用新的 URL。
本文档介绍的是第三种解决方案。
在您对某个文件配置了 "回源 URL 改写" 后,请求的流程如下:
用户请求文件。
如果该文件未被缓存,CDN 根据配置,将用户请求 URL 改写成新的 URL,然后向源站发起请求。
CDN 获取文件后,将该文件返回给用户。同时,CDN 缓存该文件。需要留意的是,该文件的缓存键中保存的是用户请求 URL,而非改写后的 URL。关于缓存键的介绍,参见 配置缓存键值。
登录 火山引擎内容分发网络控制台。
在左侧导航栏,点击 域名管理。
在 域名管理 页面,找到需要配置的域名,点击 管理。
在域名页面上,点击 回源配置 页签。
在 回源 URL 改写 下方,设置 状态 为启用。
点击 新增规则。 您最多可以添加 50 条规则。
按照配置说明进行设置。
设置完成后,在页面右上角点击 提交编辑。
配置 | 说明 |
---|---|
改写类型 | 表示改写方式。该配置有以下取值:
|
当 改写类型 是 路径改写 时,"回源 URL 改写" 的配置说明如下:
配置 | 说明 |
---|---|
用户请求路径 | 表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中路径。对于一个用户请求,如果该正则表达式匹配了路径中的任何部分,这条规则就匹配了该用户请求。参见 配置示例。 |
回源路径 | 表示改写后,回源请求 URL 中的路径。您可以在路径中使用
参见 配置示例。 |
当 改写类型 是 URL 改写 时,"回源 URL 改写" 的配置说明如下:
配置 | 说明 |
---|---|
请求 URL | 表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中以下这部分的内容:
对于一个用户请求,如果该正则表达式匹配了 "路径 + 查询字符串" 中的任何部分,这条规则就匹配了该用户请求。参见 配置示例。 |
回源 URL | 表示改写后,回源请求 URL 中的路径和查询字符串。您可以在路径中使用
参见 配置示例。 |
在规则列表中,每条规则都有优先级。优先级为 1 的规则具有最高优先级。当收到一个用户请求时,CDN 按规则的优先级,从高到低尝试将请求与规则匹配。如果请求匹配了一条规则,匹配过程就停止了。您可以拖动规则来调整优先级。
规则中的 用户请求路径 或者 请求 URL 定义了规则的作用范围。如果您创建了多条规则,请留意是否存在某条规则的作用范围包含另一条规则的作用范围的情况,并按您的预期设置规则的优先级。例如,您创建了两条规则。规则A 的作用范围是 /dir/
,规则B 的作用范围是 /dir/path/
。对于 /dir/path/
下文件的请求,如果您希望规则B 生效,那么您需要设置规则B 的优先级高于规则A。
说明
推荐您使用正则表达式测试工具对正则表达式进行测试。譬如,您可以在搜索引擎中使用关键字 在线正则表达式测试
搜索在线测试工具。
用户请求 | 配置 | 配置 | 配置效果 | 说明 |
---|---|---|---|---|
请求 URL 中的路径 | 用户请求路径(包含组 (.*) ) | 回源路径 | 重定向路径 | |
/a/bbb/image.png | ^/a{1,2}(.*)g$ | /food/$1 | /food//bbb/image.pn | 正则表达式匹配了请求路径。 注意 重定向路径中出现 |
/food$1g | /food/bbb/image.png | 正则表达式匹配了请求路径。(.*) 表示的字符串是 /bbb/image.pn 。 | ||
/aaa/bbb/image.png | /a{1,2}(.*)g | /food/$1g | /food/a/bbb/image.png |
|
/food/aaa/pngs/image.png | /food/a/pngs/image.png |
| ||
/aaa/bbb/image.png | aaa(.*) | /food//bbb/image.pngg |
注意 重定向路径中出现 | |
/aaa/bbb/image.png | aaa/(.*) | /food/$1 | /food/bbb/image.png |
|
说明
推荐您也参考上方的 "路径改写配置示例",以了解在使用正则表达式匹配路径时的注意事项。
用户请求 | 配置 | 配置 | 配置效果 | 说明 |
---|---|---|---|---|
请求 URL 中的路径和查询字符串 | 请求 URL(包含组 | 回源 URL | 重定向路径 | |
/a/bbb/image.png?param=val1¶m2=val2 | ^/a{1,5}/(.*).png\?param=(.*)
| /food/$1.png?param5=$2&size=6 | /food/bbb/image.png?param5=val1¶m2=val2&size=6 | 第一个 注意
|