本文档介绍如何在火山引擎内容分发网络(CDN)中配置 URL 重定向改写。该配置允许您对指定的请求路径,将其重定向到指定地址。
使用场景
在源站上,假设某些用户经常访问的文件的路径发生了变更。此时,有以下几种解决方案:
- 在源站配置重定向,将内容的原 URL 重定向到新的 URL。同时在 CDN 中 开启回源重定向跟随。
- 不在源站做任何变更,而是在 CDN 配置 "URL 重定向改写"。如果用户请求了原 URL,CDN 会响应您配置的 3xx 状态码,指示用户浏览器向新的 URL 发送请求。
- 不在源站做任何变更,而是在 CDN 配置 回源路径改写。如果用户请求了原 URL,CDN 在回源请求中会使用新的 URL。
本文档介绍的是第二种解决方案。
请求流程
在配置了某文件的 URL 重定向改写后,用户请求的流程如下:
- 用户使用浏览器向该文件发起访问请求。
- CDN 返回您配置的 3xx 响应状态码以及文件的新 URL。
- 用户浏览器向新 URL 发起请求。
操作步骤
- 登录 火山引擎内容分发网络控制台。
- 在左侧导航栏,点击 域名管理。
- 在 域名管理 页面,找到需要配置的域名,点击 管理。
- 定位 URL 重定向改写 模块。
- 如果您使用的是旧版域名管理页面,点击 编辑配置,然后在 访问控制 标签页中定位 URL 重定向改写 模块。
- 如果您使用的是新版域名管理页面,点击 编辑域名。在页面左侧的树状配置项列表中,定位 功能配置 > 访问控制 > URL 重定向改写。如果该模块置灰,点击模块右边的 + 。
关于新旧版域名管理页面的区别,参见 新版域名配置。
- 在 URL 重定向改写 模块中,设置 状态 为启用,然后点击 新增规则。
您最多可以添加 50 条规则。 - 根据 配置说明 进行设置。
- 设置完成后,点击 提交编辑。

配置说明
配置 | 说明 |
|---|
重写路径 | 表示一个正则表达式,长度不超过 1,024 个字符,用于匹配用户请求 URL 中的完整路径或者路径中的特定字符串。您可以在正则表达式中使用分组。 参见 配置示例。 |
跳转方式 | 表示CDN 重定向用户请求时返回的响应状态码。该配置的可选项有 301、302、303、307、308。 需要留意的是: - 对于 301 和 302,如果原请求使用的方法不是GET,那么客户端向新的URL发送请求时,新请求使用的方法可能变成 GET。
- 对于 303,新请求使用的方法是 GET。
- 对于 307 和 308,新请求使用的方法与原请求相同,不会被改变。
|
目标协议 | 表示重定向请求使用的协议。该配置有以下可选项: - 跟随请求:表示重定向后的请求使用原请求的协议。
- HTTP:表示重定向请求使用 HTTP 协议。
- HTTPS:表示重定向请求使用 HTTPS 协议。
|
目标 Host | 表示重定向 URL 中的域名或者 IP 地址。IP 地址只能是 IPv4 类型的地址。域名的长度不能超过 1,024 个字符。需要注意的是,如果该域名不是加速域名,用户向重定向 URL 发送的请求将无法被加速。 |
目标路径 | 表示一个替换字符串,用于在请求 URL 的路径中替换 "重写路径" 匹配到的字符串,替换字符串的要求如下: - 长度不能超过 1,024 个字符。
- 不能包含连续斜杠(//)、百分号(%)、空格、问号(?)。
说明 - 请留意该配置与 回源路径改写 功能中的 "CDN 回源路径" 配置的区别。对于正则表达式匹配的用户请求,
- "CDN 回源路径" 用于替换请求 URL 中的完整路径。
- "目标路径" 用于替换路径中正则表达式匹配到的字符串。
- 推荐您使用正则表达式测试工具对正则表达式进行测试。譬如,您可以在搜索引擎中使用关键字
在线正则表达式测试 搜索在线测试工具。
参见 配置示例。 |
目标参数 | 表示请求 URL 中查询参数的处理方式。该配置有以下可选项: - 保留全部:表示重定向 URL 中包含请求 URL 中所有的查询参数。
- 删除全部:表示重定向 URL 中不包含请求 URL 中的任何查询参数。
- 保留部分:表示重定向 URL 中包含请求 URL 中特定的查询参数。
- 删除部分:表示重定向 URL 中包含请求 URL 中除了特定查询参数以外的所有查询参数。
|
参数名称 | 表示需要保留或不保留的查询参数,长度不能超过 1,024 个字符。多个查询参数之间使用分号(;)分隔。 - 如果 目标参数 是 保留全部 或者 删除全部, 该配置的值必须为
*。 - 如果 目标参数 是 保留部分 或者 删除部分,您可以指定一个或者多个查询参数。查询参数不能包含连续斜杠(//)、百分号(%)、双引号(")、空格。同时,查询参数不能是
*。
该配置的默认值是 *。 |
规则优先级
当收到用户请求时,CDN 基于规则在列表中出现的顺序,依次处理规则。在处理规则时,CDN 尝试将规则与请求匹配。如果任意一条规则匹配了请求,CDN 对请求文件应用规则中的 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/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。
|