为了避免回源请求URI与源站URI不匹配导致的回源失败,您可以通过配置回源URI改写功能将回源请求URI修改为与源站匹配的URI,从而提升回源命中率。通过本文您可以了解配置重写规则的操作步骤。

注意事项

  • 单个域名可以配置的回源URI改写规则数量上限是50个。
  • 规则改写按照规则列表从上到下顺序执行的,此顺序可能会影响您的改写结果。
  • 回源URI改写功能与重写功能的区别在于,重写功能的作用位置是在CDN边缘节点上面,会影响CDN内部链路,也会改写缓存key,而回源URI改写功能的作用位置是在CDN回源节点上面,不影响CDN内部链路,不改写缓存key。
  • 回源URI改写功能在配置执行规则的情况下,对URL中参数的改写可能会与域名管理 > 性能优化页签下的过滤参数(可保留指定参数)过滤参数(可删除指定参数)功能相冲突,这三个功能同时配置的时候,需要注意避免配置冲突。

配置回源URI

  1. 登录CDN控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的管理
  4. 在指定域名的左侧导航栏,单击回源配置
  5. 单击回源URI改写页签。
  6. 单击添加
  7. 根据您的需求,配置需要改写的URI、目标URI和执行规则。
    改写回源URI
    参数 示例 说明
    需要改写的URI ^/hello$ 以正斜线(/)开头的URI,不含http://头及域名。支持PCRE正则表达式。
    目标URI /hello/test 以正斜线(/)开头的URI,不含http://头及域名。
    执行规则 如果配置了多条规则,在匹配执行当前规则后,继续匹配后续规则。
    break
    • 如果配置了多条规则,若请求的URI匹配了当前规则,匹配执行完当前规则后,剩余规则将不再匹配。
    • 只修改URI部分,不修改URL的参数,不影响回源参数改写功能对URL中参数的改写。
    enhance break
    • 如果配置了多条规则,若请求的URI匹配了当前规则,匹配执行完当前规则后,剩余规则将不再匹配。
    • 对URI中参数的改写可能会与回源参数改写功能对URL中参数的改写相冲突,这两个功能同时配置的时候,需要注意避免配置冲突。
  8. 单击确定,使改写规则开始执行和生效。

    您也可以在回源URI改写页面的规则列表中,单击修改删除,对当前配置的规则进行相应操作。

样例

  • 样例一:执行空规则。
    待改写URI ^/hello$
    目标URI /index.html
    执行规则
    结果说明 原始请求:http://domain.com/hello

    改写后的回源请求:http://domain.com/index.html

    该请求将会继续匹配回源URI改写规则列表中其余的规则。

  • 样例二:执行break规则。
    待改写URI ^/hello.jpg$
    目标URI /image/hello.jpg
    执行规则 break
    结果说明 原始请求:http://domain.com/hello.jpg

    改写后的回源请求:http://domain.com/image/hello.jpg

    该请求将不再继续匹配回源URI改写规则列表中其余的规则。

  • 样例三:执行enhance break规则。
    待改写URI ^/hello.jpg?code=123$
    目标URI /image/hello.jpg?code=321
    执行规则 enhance break
    结果说明 原始请求:http://domain.com/hello.jpg?code=123

    改写后的回源请求:http://domain.com/image/hello.jpg?code=321

    该请求将不再继续匹配回源URI改写规则列表中其余的规则。
  • 样例四:在文件名是变量的情况下对根目录添加URI前缀。

    例如:将包含/xxx的URI(xxx代表任意文件名称,例如:/hello.jpg、/hello.html等等)改写为/image/xxx,即对根目录下的任意文件的URI都插入路径/image。

    待改写URI ^(.*)$
    说明 ^(.*)$代表任意字符,()代表的是一个分组,可以在目标URI中通过$1来调用分组的变量内容。
    目标URI /image$1
    说明 $1表示正则表达式中第一对圆括号中的表达式匹配到的内容,$2是第二个小括号里面的内容,依此类推。
    执行规则 break
    结果说明
    • 原始请求:http://domain.com/hello.jpg

      改写后的回源请求:http://domain.com/image/hello.jpg

    • 原始请求:http://domain.com/hello.html

      改写后的回源请求:http://domain.com/image/hello.html

    该请求将不再继续匹配回源URI改写规则列表中其余的规则。
  • 样例五:在文件名是变量的情况下对指定目录添加URI前缀。
    例如:将包含/live/xxx的URI(xxx代表任意文件名称,例如:/live/hello.jpg、/live/hello.html 等等)改写为/image/live/xxx,即对目录/live下的任意文件的URI都插入路径/image。
    待改写URI ^/live/(.*)$
    目标URI /image/live/$1
    执行规则 break
    结果说明
    • 原始请求:http://domain.com/live/hello.jpg

      改写后的回源请求:http://domain.com/image/live/hello.jpg

    • 原始请求:http://domain.com/live/hello.html

      改写后的回源请求:http://domain.com/image/live/hello.html

    该请求将不再继续匹配回源URI改写规则列表中其余的规则。