You need to enable JavaScript to run this app.
导航
回源 URL 改写
最近更新时间:2024.10.14 19:37:20首次发布时间:2023.03.15 19:11:17

本文档介绍如何在火山引擎内容分发网络(CDN)中配置 "回源 URL 改写"。该功能允许对 CDN 回源请求 URL 中的路径和查询参数进行改写。

功能概述

在源站上,假设某些文件的 URL 或者 URL 的访问逻辑发生了变更。此时,有以下几种解决方案:

  • 在源站配置 301 或 302 重定向,将内容的原 URL 重定向到新的 URL。同时,在 CDN 中启用 回源重定向跟跟随 功能。

  • 不在源站做任何变更,而是在 CDN 中配置 URL 重定向改写 功能。如果用户请求了原 URL,CDN 会响应 301 或者 302 状态码,指示用户浏览器向新的 URL 发送请求。

  • 不在源站做任何变更,而是在 CDN 配置 回源 URL 改写。如果用户请求了原 URL,CDN 在回源请求中会使用新的 URL。

本文档介绍的是第三种解决方案。

请求流程

在您对某个文件配置了 "回源 URL 改写" 后,请求的流程如下:

  1. 用户请求文件。

  2. 如果该文件未被缓存,CDN 根据配置,将用户请求 URL 改写成新的 URL,然后向源站发起请求。

  3. CDN 获取文件后,将该文件返回给用户。同时,CDN 缓存该文件。需要留意的是,该文件的缓存键中保存的是用户请求 URL,而非改写后的 URL。关于缓存键的介绍,参见 配置缓存键值

操作步骤

  1. 登录 火山引擎内容分发网络控制台

  2. 在左侧导航栏,点击 域名管理

  3. 域名管理 页面,找到需要配置的域名,点击 管理

  4. 在域名页面上,点击 回源配置 页签。

  5. 回源 URL 改写 下方,设置 状态 为启用。

  6. 点击 新增规则。 您最多可以添加 50 条规则。

  7. 按照配置说明进行设置。

  8. 设置完成后,在页面右上角点击 提交编辑

配置说明

配置说明

改写类型

表示改写方式。该配置有以下取值:

  • 路径改写:表示对回源 URL 中的路径进行改写。

  • URL 改写:表示对回源 URL 中的路径和查询字符串进行改写。

路径改写

alt

改写类型路径改写 时,"回源 URL 改写" 的配置说明如下:

配置说明
用户请求路径表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中路径。对于一个用户请求,如果该正则表达式匹配了路径中的任何部分,这条规则就匹配了该用户请求。参见 配置示例

回源路径

表示改写后,回源请求 URL 中的路径。您可以在路径中使用 $1$2$3 等表示您在 用户请求路径 的正则表达式中定义的组。
该配置的要求如下:

  • 回源路径的长度不超过 1,024 个字符。

  • 回源路径必须以斜杠(/)开头。

  • 回源路径不能包含连续斜杠(//)、百分号(%)、空格、问号(?)。

参见 配置示例

URL 改写

alt

改写类型URL 改写 时,"回源 URL 改写" 的配置说明如下:

配置说明

请求 URL

表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中以下这部分的内容:

  • 路径 + 查询字符串

对于一个用户请求,如果该正则表达式匹配了 "路径 + 查询字符串" 中的任何部分,这条规则就匹配了该用户请求。参见 配置示例

回源 URL

表示改写后,回源请求 URL 中的路径和查询字符串。您可以在路径中使用 $1$2$3 等表示您在 请求 URL 的正则表达式中定义的组。

该配置的要求如下:

  • 回源 URL 的长度不超过 1,024 个字符。

  • 回源 URL 必须以斜杠(/)开头。

  • 回源 URL 不能包含连续斜杠(//)、百分号(%)、空格、问号(?)。

参见 配置示例

规则优先级

在规则列表中,每条规则都有优先级。优先级为 1 的规则具有最高优先级。当收到一个用户请求时,CDN 按规则的优先级,从高到低尝试将请求与规则匹配。如果请求匹配了一条规则,匹配过程就停止了。您可以拖动规则来调整优先级。

规则中的 用户请求路径 或者 请求 URL 定义了规则的作用范围。如果您创建了多条规则,请留意是否存在某条规则的作用范围包含另一条规则的作用范围的情况,并按您的预期设置规则的优先级。例如,您创建了两条规则。规则A 的作用范围是 /dir/,规则B 的作用范围是 /dir/path/。对于 /dir/path/ 下文件的请求,如果您希望规则B 生效,那么您需要设置规则B 的优先级高于规则A。

配置示例

说明

推荐您使用正则表达式测试工具对正则表达式进行测试。譬如,您可以在搜索引擎中使用关键字 在线正则表达式测试 搜索在线测试工具。

路径改写配置示例

用户请求配置配置配置效果说明
请求 URL 中的路径用户请求路径(包含组 (.*)回源路径重定向路径

/a/bbb/image.png

^/a{1,2}(.*)g$

用于匹配以 / 开头和以 g 结尾的路径。

/food/$1

/food//bbb/image.pn

正则表达式匹配了请求路径。(.*) 表示的字符串是 /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

  • 正则表达式匹配了请求路径。

  • (.*) 表示的字符串是 a/bbb/image.pn

/food/aaa/pngs/image.png

/food/a/pngs/image.png

  • 正则表达式匹配了请求路径。

  • (.*) 表示的字符串是 a/pngs/image.pn

/aaa/bbb/image.png

aaa(.*)

用于匹配请求路径中的特定字符串。

/food//bbb/image.pngg

  • 正则表达式匹配了请求路径中的 aaa/bbb/image.png

  • (.*) 表示的字符串是 /bbb/image.png

注意

重定向路径中出现 //,因此该路径无效。同时,文件扩展名也不正确。

/aaa/bbb/image.png

aaa/(.*)

用于匹配请求路径中的特定字符串。

/food/$1

/food/bbb/image.png

  • 正则表达式匹配了请求路径中的 aaa/bbb/image.png

  • (.*) 表示的字符串是 bbb/image.png

URL 改写配置示例

说明

推荐您也参考上方的 "路径改写配置示例",以了解在使用正则表达式匹配路径时的注意事项。

用户请求

配置

配置

配置效果

说明

请求 URL 中的路径和查询字符串

请求 URL(包含组(.*)

回源 URL

重定向路径

/a/bbb/image.png?param=val1&param2=val2

^/a{1,5}/(.*).png\?param=(.*)

用于匹配符合以下所有条件的请求 URL:

  • /aaa/ 开头的 .png 文件。

  • 第一个查询参数是 param

/food/$1.png?param5=$2&size=6

/food/bbb/image.png?param5=val1&param2=val2&size=6

第一个 (.*) 表示的字符串是 bbb/image。第二个 (.*) 表示的字符串是 val1&param2=val2

注意

  • 请求 URL 中,查询字符串开头的 ? 需要写成 \?

  • 回源 URL 中,查询字符串开头的 ? 还是写成 ?