URL/协议改写

更新时间:2024-07-09 16:18:40

当用户通过CDNetworks的CDN平台获取您的网站内容时,您可以在控制台上进行简单的规则配置,实现根据请求URL的协议,不同的请求内容,不同的请求头甚至用户所在的地理位置等,返回给用户特定的内容。当前,CDNetworks是通过响应特定的状态码和新的请求URL给客户端,由客户端重新发起请求的方式,来实现上面描述的请求URL或者协议改写的场景。

如何设置URL/协议改写

  1. 登录CDNetworks控制台, 选择对应的产品。
  2. 进入自助配置页面,找到要设置的域名,点击上方配置修改或者域名右侧的编辑按钮[Feature Upgrade] Advanced Access Control
  3. 进入配置修改页面,找到页面改写/重定向下的URL/协议改写,点击添加按钮。
  4. 进入规则编辑页面,可以根据您的需要,添加以下配置项。

生效范围
目前,CDNetworks支持您在控制台填写URL正则表达式,以URL正则匹配的方式,判断用户请求是否适用于您的改写规则,例如:rewrite/*.(jpg|png|gif),表示当请求rewrite目录下的jpg|png|gif文件时,都将匹配该规则。


如上图所示,您除了可以配置URL正则表达式作为您创建的这个规则生效范围的基础匹配条件,还可以进一步执行进阶范围配置。您可以在以下几个参数中选择1个或多个作为组合的配置项,与基础的URL正则表格式为关系,形成该规则最终的生效范围。

参数 描述
UA或例外的UA 支持正则表达式,空格和TAB转换为\s
支持同时配置多个UA,每个UA单独一行。
国家地区或例外的国家地区 支持在CDNetworks提供的国家地区列表中直接搜索选择;
中国大陆区域可以选择到具体省份,或者更大的地理区域,比如华东,西南。
请求头或例外的请求头 需要输入头部和值,同时值支持填写正则表达式,例如:Range bytes=[0-9]{9,}
当前单条规则仅支持配置一个请求头。
例外的URL(正则) 该配置项支持正则表达式;
URL正则匹配中填写的是 rewrite/*.(jpg|png|gif),该配置项中填写的是rewrite/*exception*.jpg,意味着在rewrite目录下的jpg|png|gif文件请求将匹配该规则,但含*exception*.jpg的请求将不适用于该规则

上述进阶范围配置中带有例外字眼的配置项,表示,在基础匹配规则的匹配范围内,排除一些特定情况;每个配置项在单条规则中仅能出现一次,且UA例外的UA在单个规则中为互斥关系,不能同时出现,国家地区请求头情况类似,所以最多仅能同时存在4个配置。

改写类型
目前CDNetworks支持您选择协议改写或者URL改写两种改写类型,无论您选择哪种改写类型,都需要选择返回给客户端的响应状态码,目前CDNetworks支持您配置的响应状态码范围:301;302;303;307,默认的状态码值为302

类型一: 协议改写
此处的协议改写,是指节点收到客户端请求时就进行改写,节点缓存和回源时会使用改写后的协议。若仅是节点回源时进行协议改写,请参考回源协议改写配置相关规则。
在该规则中您可以如下图,选择HTTP -> HTTPS或者HTTPS -> HTTP的改写。


类型二:URL改写
和协议改写类似,URL改写也是在CDN节点接收到请求时就进行改写,节点缓存和回源时使用改写后的URL。若仅是节点回源时对请求URL的Host和端口进行替换,请参考回源Host和回源端口配置相关规则。
在URL改写类型中,您可以在原路径下填写想要进行改写的请求URL,支持正则表达式或者完整的URL,例如(https://[^/]+)/.*或者http://domain/browse/index.html?aa=1;在重定向路径下填写改写后的路径,需要以http://或者https://开头。


优先级
您可以选择该规则生效的优先级,从1-10,数字越大匹配和执行的优先级越高。在同一匹配条件下,执行优先级高的规则。

除了通过点击添加按钮进入规则页面进行详细参数的配置外,您还可以在添加按钮右侧点击快捷配置进行协议改写或者URL改写的简单配置。快捷配置中,生效范围将默认为全部请求,响应状态码为302,其余的配置如协议改写的逻辑,原URL和重定向URL,优先级您均可以自定义。


完成上述配置后,请点击确认,然后选择下一步提交您的配置。为了避免配置影响您的生产环境,我们推荐您先预部署,把配置生效到测试环境中来验证您的配置是否正确。当配置确定无误后,单击直接部署将配置正式生效到线上环境,通常约3-5分钟后,配置将正式生效到线上环境。关于预部署测试的更多细节,请参考教程通过预部署来验证配置是否生效

配置示例

示例一:对匹配URL正则表达式和UA、国家地区字段的请求进行协议改写
关联该规则的域名,当请求匹配了图中的URL正则表达式,同时UA头部为Mozilla/4.0且用户国家地区为日本;韩国,CDN节点将缓存并返回给客户端改写后的协议下的URL,例如: http://domain/rewrite/example.jpg请求将返回https://domain/rewrite/example.jpg,同时响应状态码为303,客户端将对返回的新协议的URL发起新请求。


示例二:对匹配URL正则表达式和UA、国家地区字段的请求,特定URL进行改写
关联该规则的域名,当请求匹配了图中的URL正则表达式,同时UA头部为Mozilla/4.0且用户国家地区为日本;韩国,并在配置的原路径的规则匹配范围内,CDN节点将缓存并返回给客户端改写后的URL,例如: https://domain/rewrite/urltype1.jpg请求将返回https://domain/target/urltype1.jpg,同时响应状态码为302,客户端将对返回的URL发起新请求。


注意事项

因为节点缓存和回源使用的是改写后的URL,因此改写后的域名需是在CDNetworks CDN平台上加速的域名。
协议改写类型当前单个域名只允许配置一条规则,主要是为了避免一条请求同时命中HTTP—>HTTPSHTTPS—>HTTP可能导致的循环问题。如要配置多条协议改写,请联系技术支持配置。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!