You need to enable JavaScript to run this app.
导航
回源 URL 改写
最近更新时间:2025.10.27 10:41:17首次发布时间: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. 定位 回源 URL 改写 模块。
    • 如果您使用的是旧版域名管理页面,点击 编辑配置,然后在 回源配置 标签页中定位 回源 URL 改写 模块。
    • 如果您使用的是新版域名管理页面,点击 编辑域名。在页面左侧的树状配置项列表中,定位 功能配置 > 回源配置 > 回源 URL 改写。如果该模块置灰,点击模块右边的 +
      关于新旧版域名管理页面的区别,参见 新版域名配置
  5. 回源 URL 改写 模块中,设置 状态 为启用。
  6. 点击 新增规则。 您最多可以添加 50 条规则。
  7. 按照配置说明进行设置。
  8. 设置完成后,点击 提交编辑

配置说明

配置

说明

改写类型

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

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

路径改写

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

配置

说明

用户请求路径

表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中路径。

回源路径

表示改写后,回源请求 URL 中的路径,长度不能超过 1,024 个字符。您可以在路径中使用 $1$2$3 等捕获 用户请求路径 中定义的组。

参见 路径改写配置示例

URL 改写

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

配置

说明

请求 URL

表示一个正则表达式,长度不能超过 1,024 个字符,用于匹配用户请求 URL 中的路径和查询字符串。

回源 URL

表示改写后的路径和查询字符串,长度不能超过 1,024 个字符。您可以使用 $1$2$3 等捕获 请求 URL 中定义的组。

参见 URL 改写配置示例

规则优先级

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

配置示例

说明

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

路径改写配置示例

用户请求

配置

配置

配置效果

说明

请求 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