docs: Add handle_errors, CEL matcher; a few other improvements

This commit is contained in:
Matthew Holt 2020-03-24 17:14:09 -06:00
parent e8e0ec148b
commit f4a2d34127
No known key found for this signature in database
GPG key ID: 2A349DD577D586A5
5 changed files with 45 additions and 1 deletions

View file

@ -13,6 +13,7 @@ Directive | Description
**[encode](/docs/caddyfile/directives/encode)** | Encodes (usually compresses) responses
**[file_server](/docs/caddyfile/directives/file_server)** | Serve files from disk
**[handle](/docs/caddyfile/directives/handle)** | A mutually-exclusive group of directives
**[handle_errors](/docs/caddyfile/directives/handle_errors)** | Defines routes for handling errors
**[header](/docs/caddyfile/directives/header)** | Sets or removes response headers
**[log](/docs/caddyfile/directives/log)** | Enables access/request logging
**[php_fastcgi](/docs/caddyfile/directives/php_fastcgi)** | Serve PHP sites over FastCGI

View file

@ -13,7 +13,7 @@ A static file server. It works by appending the request's URI path to the [site'
file_server [<matcher>] [browse] {
root <path>
hide <files...>
index <files...>
index <filenames...>
browse [<template_file>]
}
```
@ -21,6 +21,7 @@ file_server [<matcher>] [browse] {
- **browse** enables file listings for requests to directories that do not have an index file.
- **root** sets the path to the site root for just this file server instance, overriding any other. Default: `{http.vars.root}` or the current working directory. Note: When specified as a subdirective like this, only this directive will know this root; for other directives (like [try_files](/docs/caddyfile/directives/try_files) or [templates](/docs/caddyfile/directives/templates)) to know the same site root, use the [root](/docs/caddyfile/directives/root) directive, not subdirective.
- **hide** is a list of files to hide; if requested, the file server will pretend they do not exist. The active configuration file will be added by default.
- **index** is a list of filenames to look for as index files. Default: `index.html index.txt`
- **<template_file>** is an optional custom template file to use for directory listings.

View file

@ -0,0 +1,19 @@
---
title: handle_errors (Caddyfile directive)
---
# handle_errors
Sets up error handlers.
When the normal HTTP request handlers return an error, normal procesing stops and the error handlers are invoked. Error handlers form a route which is just like normal routes, and they can do anything that normal routes can do. This enables great control and flexibility when handling errors during HTTP requests.
## Syntax
```
handle_errors {
<directives...>
}
```
- **<directives...>** is a list of HTTP handler directives, directive blocks, or matchers; one per line.

View file

@ -121,6 +121,7 @@ For most matchers that accept multiple values, those values are OR'ed; i.e. one
Full matcher documentation can be found [in each respective matcher module's docs](/docs/json/apps/http/servers/routes/match/).
- [expression](#expression)
- [file](#file)
- [header](#header)
- [header_regexp](#header-regexp)
@ -134,6 +135,26 @@ Full matcher documentation can be found [in each respective matcher module's doc
- [remote_ip](#remote-ip)
### expression
```
expression <cel...>
```
By any [CEL (Common Expression Language)](https://github.com/google/cel-spec) expression that returns `true` or `false`.
⚠️ This module is still experimental and, as such, may experience breaking changes.
As a special case, Caddy [placeholders](/docs/conventions#placeholders) (or [Caddyfile shorthands](/docs/caddyfile/concepts#placeholders)) may be used in these CEL expressions, as they are preprocessed and converted to regular CEL function calls before being interpreted by the CEL environment.
Examples:
```
expression {method}.startsWith("P")
```
### file
```