@upyun
2017-04-12T08:19:54.000000Z
字数 1670
阅读 1073
Rewrite
功能介绍
自定义 rewrite 是基于 DSL ( Domain Specific Language ) 理念来设计的,主要面向开发者使用。充分利用又拍云 CDN ( Content Delivery Network )分布式边缘网络的性能及规模,通过又拍云管理控制台可轻松创建 rewrite 规则,规则支持函数、变量、字符串常量,用户可以将这些自由组合,可以实现对 URL 的改写、重定向、自定义 HTTP 头、请求禁止等处理逻辑。
URL的组成格式
统一资源定位器(URL)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
实例说明:
http://m.weibo.cn/status/4095687660578876?wm=3333_2001
(今日微博最热视频)
| 字段 | URL对应 |
|---|---|
| protocol | http |
| hostname | m.weibo.cn |
| path | /status/4095687660578876 |
| query | wm=3333_2001 |
注意:query ,不带前缀 '?' 。
为了更好的理解 rewrite 规则,本节围绕 rewrite 规则配置项和规则示例来进行详细说明,先来了解下配置截图,如下截图所示:

字段详解:
配置一条完整的 rewrite 规则需要完成 Rewrite 规则 、URI 提取正则 、break 、调试模式 、备注 这 5 个选项的配置。
其中 Rewrite 规则 为必填项,URI 提取正则和备注为可填项,break 和调试模式为控制开关,可根据需要来进行开启和关闭。
| 字段 | 必选 | 说明 |
|---|---|---|
| Rewrite 规则 | 是 | rewrite 规则主要组成部分,代表最终的处理逻辑。 |
| URI 提取正则 | 否 | 为对当前请求 URI 进 匹 配的 PCRE 正则表达式,匹配后,产 2 ... 这样 的变 |
| break | 开启或关闭 | 开启表示 rewrite 成功后终止剩下的的 rewrite 过程 |
| 调试模式 | 开启或关闭 | 一个调试开关,默认开启 |
| 备注 | 否 | 描述该规则的用途 |
Rewrite 调试模式
由于 rewrite 过程会对当前请求产生副作用,这是非常危险的,所以我们引入调试模式。调试模式仅对 URL 的修改进行保护,响应头/请求头等修改无视调试模式。
使用命令行工具 curl 即可对规则调试:
curl -H "X-Upyun-Rewrite-Preview: true" http://your-domain/foo/bar.html -v
规则排序
自定义 Rewrite 功能支持自定义多条规则,请求时按顺序对规则进行匹配,一个请求可命中多条规则。如果检查到有 break 标识且此次 rewrite 成功,则跳出查找,使用此次匹配到的规则;如未找到 break 标识,则用最后一条匹配的规则。
您可以通过点击上下箭头,控制规则的排序。将权重较高的规则排在下方,如下图所示:
此外,自定义 Rewrite 功能支持对规则的修改及删除。
注意事项
/$SUB($DECODE_BASE64($_HEADER_foo), $_GET_from, $_GET_to)/ 。/foo?bar=$1?