You need to enable JavaScript to run this app.
导航
配置 URL 重定向改写
最近更新时间:2024.05.28 17:08:37首次发布时间:2022.08.24 19:23:09

本文档介绍如何在火山引擎内容分发网络中配置 URL 重定向改写。该配置允许您对指定的请求路径,将其重定向到指定地址。

说明

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

使用场景

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

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

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

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

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

请求流程

在配置了某文件的 URL 重定向改写后,用户请求的流程如下:

  1. 用户使用浏览器向该文件发起访问请求。
  2. 内容分发网络返回 301 或者 302 响应状态码以及文件的新 URL。
  3. 用户浏览器向新 URL 发起请求。

操作步骤

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 域名管理
  3. 域名管理 页面,找到需要配置的域名,点击 管理
    页面上方的筛选条件和搜索框可以帮助您快速找到要配置的域名。
  4. 在域名页面上,点击 访问控制 页签。
  5. 在页面右上方,点击 编辑配置
  6. URL 重定向改写 下方,点击 添加规则
    您最多可以添加 50 条规则。
  7. 根据表格中 配置说明 进行设置。
  8. 设置完成后,在页面右上方,点击 提交编辑

alt

配置说明

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

重写路径

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

参见 配置示例

跳转方式

表示内容分发网络重定向用户请求时返回的响应状态码。该配置有以下可选项:

  • 301:表示内容是永久性转移。
  • 302:表示内容是暂时性转移。

需要留意的是,如果原用户请求使用的方法不是 GET,客户端浏览器可能会使用 GET 方法发送重定向请求。

目标协议

表示重定向请求使用的协议。该配置有以下可选项:

  • 跟随请求:表示重定向后的请求使用原请求的协议。
  • 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 个字符。多个查询参数之间使用分号(;)分隔。

  • 如果 目标参数保留全部 或者 删除全部, 该配置的值必须为 *

  • 如果 目标参数保留部分 或者 删除部分,您可以指定一个或者多个查询参数。查询参数不能包含连续斜杠(//)、百分号(%)、双引号(")、空格。同时,查询参数不能是 *

该配置的默认值是 *

配置示例

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