如果源站资源路径变化,CDN节点资源路径也会变化。用户请求的URL路径不变时,CDN节点需要重写请求的URL,将其重定向到目标路径,以减少回源并提升客户端访问性能。
背景信息
HTTP 302状态码(302 Found)表示资源临时改变位置。配置访问URL重写后,CDN节点会在HTTP Location头部放置新的URL,客户端收到302响应后会请求新的URL。
配置访问URL改写规则后,CDN节点默认给客户端发送302重定向状态码,同时也支持303和307重定向状态码。
编码 | 含义 | 处理方法 | 典型应用场景 |
302 | Found | GET方法不会发生变更,其他方法有可能会变更为GET方法。 | 由于不可预见的原因该页面暂不可用。在这种情况下,搜索引擎不会更新它们的链接。 |
303 | See Other | GET方法不会发生变更,其他方法会变更为 GET 方法(消息主体会丢失)。 | 用于PUT或POST请求完成之后进行页面跳转,防止由于页面刷新导致的操作的重复触发。 |
307 | Temporary Redirect | 方法和消息主体都不发生变化。 | 由于不可预见的原因该页面暂不可用。在这种情况下,搜索引擎不会更新它们的链接。当站点支持非 GET 方法的链接或操作的时候,该状态码优于 302 状态码。 |
单个域名最多可以配置50条重写规则。配置多条规则时,按照视频点播控制台访问URL改写列表由上而下的顺序执行。
操作步骤
在左侧导航栏选择配置管理 > 分发加速配置 > 域名管理,进入到域名管理页面。
单击目标域名所在行的配置。
在指定域名的左侧导航栏,单击缓存配置。
单击访问URL改写页签。
单击添加,根据您的实际需求,配置访问URL改写参数。
参数
说明
待改写的Path
仅支持以
/开头的Path,不含协议头和域名;支持PCRE正则表达式,如^/hello$。目标Path
执行规则设置为Break的情况下,仅支持以
/开头的Path,不含协议头和域名。执行规则设置为Redirect的情况下,可以包含协议头和域名。支持PCRE正则表达式,例如:常用
$1、$2来捕获待改写Path中圆括号内的字符串。
执行规则
默认支持Redirect和Break这两种规则。
Redirect:如果请求URL匹配了某条规则,该请求将会被302重定向到目标URL,节点返回给客户端的Location信息为目标URL(不修改原始URL中的参数)。执行完当前规则后,当存在其他配置规则时,会继续匹配剩余规则。
Break:如果请求URL匹配了某条规则,该请求将会被重写为目标URL(不修改原始URL中的参数)。执行完当前规则后,当存在其他配置规则时,将不再匹配剩余规则。
同时支持空、enhance-break和enhance_redirect三种规则,这三种规则需要提交工单申请后台配置。
空 : 配置了多条规则的情况下,如果请求URL匹配了某条规则,执行完当前规则以后,还会继续匹配后续规则。
enhance_break : 和 break类似,但是会修改包含参数在内的整个URL。
enhance_redirect : 和redirect类似,但是会修改包含参数在内的整个URL。
说明不同的执行规则使用的重写方式不同,重写后的URL是否支持其他域名、其他协议也存在差异:
空、Break、enhance_break采用直接重写用户请求URL的方式,不支持重写为其他域名,也不支持重写为其他协议(例如从HTTP协议重写为HTTPS协议)。
Redirect、enhance_redirect采用302跳转方式实现URL重写,支持重写为其他域名,也支持重写为其他协议:
302 Location地址除了可以设置为当前的加速域名,还支持设置为其他域名,可以实现这样的效果:原始URL使用的域名是
example.com,重写后的URL使用新的域名aliyundoc.com。302 Location地址支持使用其他协议,可以实现这样的效果:原始URL使用HTTP协议,重写后的URL使用HTTPS协议。
单击确定,完成配置。
成功配置重写功能后,您可以在重写列表中,对当前的配置进行修改或删除操作。
配置示例
访问URL改写规则按照正则表达式配置如下所示:
待改写的Path:^/hello$
目标Path:/index.html
执行规则:Redirect
客户端请求http://example.aliyundoc.com/hello时,请求中包含/hello,CDN节点会在302状态码的Location信息里写入新的URL地址http://example.aliyundoc.com/index.html,并返回给客户端,客户端对http://example.aliyundoc.com/index.html发起请求。