You need to enable JavaScript to run this app.
导航
URL 重定向改写
最近更新时间:2024.09.25 10:31:06首次发布时间:2022.08.24 19:23:09

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

使用场景

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

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

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

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

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

请求流程

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

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

操作步骤

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

alt

配置说明

配置说明

重写路径

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

参见 配置示例

跳转方式

表示CDN 重定向用户请求时返回的响应状态码。该配置的可选项有 301302303307308

需要留意的是:

  • 对于 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