同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.


简单点,说话的方式简单点。