You need to enable JavaScript to run this app.
导航
回源路径改写
最近更新时间:2024.05.28 17:08:38首次发布时间:2023.03.15 19:11:17

本文档介绍如何在火山引擎内容分发网络中配置回源路径改写。该配置允许对内容分发网络的回源路径进行改写。

说明

该功能目前以白名单的方式对外开放。如果您需要此功能,请 提交工单

在源站上,假设某些用户经常访问的文件的路径发生了变更。此时,有以下几种解决方案:

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

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

  • 不在源站做任何变更,而是在内容分发网络配置 回源路径改写。如果用户请求了原 URL,内容分发网络在回源请求中会使用新的 URL。

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

请求流程

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

  1. 用户请求文件。

  2. 如果该文件未被缓存,内容分发网络根据配置,将用户请求 URL 中的路径改写成新的 URL 路径,然后向源站发起请求。

  3. 内容分发网络获取文件后,将该文件返回给用户。同时,内容分发网络缓存该文件。其缓存键中保存的是用户请求 URL。

操作步骤

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

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

  3. 域名管理 页面,找到需要配置的域名,点击 管理。 页面上方的筛选条件和搜索框可以帮助您快速找到要配置的域名。

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

  5. 在页面右上方,点击 回源配置

  6. 回源路径改写 下方,设置 状态开启

  7. 点击 添加改写规则。 您最多可以添加 50 条规则。

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

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

alt

配置说明

配置说明
优先级表示规则的优先级。数字 1 的规则优先级最高。在收到请求时,内容分发网络按规则的优先级,从高到低尝试将请求与规则匹配。如果请求匹配了某一条规则,内容分发网络就停止匹配其余规则。您可以通过拖拽调整规则的优先级。

用户请求路径

表示一个正则表达式,长度不超过 1,024 个字符,用于匹配用户请求 URL 中的完整路径或者路径中的特定字符串。您可以在正则表达式中使用分组。

参见 配置示例

回源路径

表示改写后的完整路径。路径的要求如下:

  • 长度不超过 1,024 个字符。

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

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

说明

  • 请留意该配置与 URL 重定向改写 功能中的 "目标路径" 配置的区别。对于正则表达式匹配的用户请求,

    • "回源路径" 用于替换请求 URL 中的完整路径。

    • "目标路径" 用于替换路径中正则表达式匹配到的字符串。

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

参见 配置示例

配置示例

用户请求配置配置配置效果说明
请求 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