同Nginx一样,Caddy中rewrite指令的主要功能是实现URL地址重写。在同一个block中,rewrite指令书写安全,因为重写规则是互斥且组合的,重复的规则,只执行第一个匹配的重写。
语法
rewrite [<matcher>] <to>
matcher是适配器,可选参数,不指定则为请求的任意URL。
to是重写后的URL。
举例
-
重写任意请求到foo.html
rewrite * /foo.html
-
把API请求替换为query字符串a=b
rewrite /api/* ?a=b
-
保留API请求中原有的query字符串并添加新的query键值对a=b
rewrite /api/* ?{query}&a=b
-
改变任意请求,保留原有query字符串并把原请求path赋值给p参数
rewrite * /index.php?{query}&p={path}
相似指令
还有如下指令也有重写的作用,但作用和效果有所不同:
uri
可以匹配前缀、后缀、和替换字符串。
try_files
检查文件是否存在并重写请求。
Q.E.D.