如果源站资源的存放路径发生变化,而用户请求的URL保持不变,您可以通过在边缘安全加速 ESA节点上配置重定向规则来匹配源站路径,将用户请求的URL重定向至目标URL,从而减少回源请求,提高客户端访问性能。
功能介绍
重定向规则的详细说明如下:
在ESA节点上配置重定向规则后,用户通过客户端发起资源访问请求。
ESA节点向客户端返回重定向状态码(例如:301或302),并在HTTP响应头中携带目标URL。
客户端在收到该响应后,直接向ESA节点的Location信息中新的URL地址发起请求,完成资源访问。
ESA支持的重定向状态码及典型应用场景
状态码 | 含义 | 处理方法 | 典型应用场景 |
301 | 永久重定向(Moved Permanently) | GET方法不变,其他方法可能变更为GET。 | 请求资源已永久移动到由Location头部指定的新URL,搜索引擎会更新链接。 |
302 | 临时重定向(Found) | GET方法不变,其他方法可能变更为 GET。 | 页面暂时不可用,搜索引擎不会更新链接。 |
303 | 临时重定向(See Other) | GET方法不变,其他方法会强制变更为GET(消息主体丢失)。 | 用于PUT或POST请求完成后的页面跳转,避免页面刷新导致重复操作。 |
307 | 临时重定向(Temporary Redirect) | 方法和消息主体都不变。 | 页面暂时不可用,当站点支持非GET方法的链接或操作时,该状态码优于302状态码。 |
308 | 永久重定向(Permanent Redirect) | 方法和消息主体都不变。 | 永久迁移资源,强制客户端保留原始请求方法和请求体,适用于网站重构或API迁移等需要保持语义一致性的场景。 |
操作步骤
新增重定向规则后,当用户发起资源访问请求时,ESA将根据规则的生效优先级依次进行匹配与执行,并返回相应的结果。
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
单击新增规则,填写规则名称。
在如果请求匹配以下规则...区域设置要匹配的用户请求特征,具体配置规则请参见规则表达式的组成。
在单一重定向区域,选择重定向类型静态,写入具体URL,选择状态码。
参数
类型
说明
类型
静态
当您需要重定向到固定URL时,请选择静态,并将目标URL设置为固定字符串,例如:URL填写
https://test.example.com/image/1.jpg?test=123
。动态
当您需要动态修改原URL时,请选择动态,并将目标URL设置为一个表达式,例如:表达式填写
concat("https://www.example.com", http.request.uri.path)
,表示将用户请求URL中的主机名替换为一个新的域名,URL中的路径保持不变。状态码
配置重定向的响应状态码:301(默认)、302、303、307和308。详细说明请参考:ESA支持的重定向状态码及典型应用场景。
保留查询字符串
是否携带原查询参数至目标URL,默认关闭,即重定向后不携带原请求的查询参数。
开启保留查询字符串后:
如果用户请求的URL中携带了查询字符串,则覆盖重定向URL中的查询字符串。
如果用户请求的URL中没有携带查询字符串,则使用重定向URL中的查询字符串。
详细配置示例请见:配置示例。
单击确定。
配置示例
操作类型为静态的示例
配置场景 1
请求是否携带查询字符串:否
重定向URL是否携带查询字符串:是
保留查询字符串配置:开启/关闭
用户请求URL示例:
http://test.example.com/1.jpg
配置的重定向URL示例:
http://test.example.com/image/1.jpg?test=123
实际重定向Location示例:
http://test.example.com/image/1.jpg?test=123
说明:原始请求无查询参数时,无论保留配置是否开启,最终Location均保留配置URL的查询字符串。
配置场景 2
请求是否携带查询字符串:是
重定向URL是否携带查询字符串:是
保留查询字符串配置:开启
用户请求URL示例:
http://test.example.com/1.jpg?test=321
配置的重定向URL示例:
http://test.example.com/image/1.jpg?test=123
实际重定向Location示例:
http://test.example.com/image/1.jpg?test=321
说明:保留配置开启时,仅保留原始请求的查询字符串,忽略配置URL的查询参数。
配置场景 3
请求是否携带查询字符串:是
重定向URL是否携带查询字符串:是
保留查询字符串配置:关闭
用户请求URL示例:
http://test.example.com/1.jpg?test=321
配置的重定向URL示例:
http://test.example.com/image/1.jpg?test=123
实际重定向Location示例:
http://test.example.com/image/1.jpg?test=123
说明:保留配置关闭时,仅保留配置URL的查询字符串,忽略原始请求的查询参数。
配置场景 4
请求是否携带查询字符串:是
重定向URL是否携带查询字符串:否
保留查询字符串配置:开启
用户请求URL示例:
http://test.example.com/1.jpg?test=321
配置的重定向URL示例:
http://test.example.com/image/1.jpg
实际重定向Location示例:
http://test.example.com/image/1.jpg?test=321
说明:保留配置开启时,自动将原始请求的查询字符串附加到配置URL(即使配置URL无查询参数)。
配置场景 5
请求是否携带查询字符串:是
重定向URL是否携带查询字符串:否
保留查询字符串配置:关闭
用户请求URL示例:
http://test.example.com/1.jpg?test=321
配置的重定向URL示例:
http://test.example.com/image/1.jpg
实际重定向Location示例:
http://test.example.com/image/1.jpg
说明:保留配置关闭时,直接丢弃原始请求的查询字符串,仅返回配置URL。
操作类型为动态的示例
配置场景 1
保留查询字符串配置:关闭
用户请求URL示例:
https://test.example.com/image/1.jpg?test=123
函数表达式:
concat("https://www.example.com", http.request.uri.path)
实际重定向Location示例:
https://www.example.com/image/1.jpg
说明:
配置关闭时,仅保留路径部分(
/image/1.jpg
),忽略原始请求的查询字符串(?test=123
)。函数表达式仅拼接域名和路径,不处理查询参数。
配置场景 2
保留查询字符串配置:开启
用户请求URL示例:
https://test.example.com/image/1.jpg?test=123
函数表达式:
concat("https://www.example.com", http.request.uri.path)
实际重定向Location示例:
https://www.example.com/image/1.jpg?test=123
说明:
配置开启时,自动将原始请求的查询字符串附加到生成的URL(即使函数表达式未显式处理查询参数)。
函数表达式仅处理路径拼接,查询字符串由系统根据配置自动追加。
保留查询字符串配置 | 用户请求URL示例 | 函数表达式 | 实际重定向Location示例 |
关闭 | https://test.example.com/image/1.jpg?test=123 | concat("https://www.example.com", http.request.uri.path) | https://www.example.com/image/1.jpg |
开启 | https://test.example.com/image/1.jpg?test=123 | concat("https://www.example.com", http.request.uri.path) | https://www.example.com/image/1.jpg?test=123 |
不同套餐的支持情况
重定向规则 | 基础版 | 标准版 | 高级版 | 企业版 |
支持配置的重定向规则数量 | 10条 | 25条 | 50条 | 125条 |
相关文档
规则相关的功能,在生效优先级、可重入性、生效颗粒度这三个特性上存在差异,详细情况请查看规则相关功能的特性说明。