handle_path
Works the same as the handle
directive, but implicitly uses uri strip_prefix
to strip the matched path prefix.
Handling a request matching a certain path (while stripping that path from the request URI) is a common enough use case that it has its own directive for convenience.
Syntax
handle_path <path_matcher> {
<directives...>
}
- <directives...> is a list of HTTP handler directives or directive blocks, one per line, just like would be used outside of a
handle_path
block.
Only a single path matcher is accepted, and is required; you cannot use named matchers with handle_path
.
Examples
This configuration:
handle_path /prefix/* {
...
}
👆 is effectively the same as this 👇, but the handle_path
form 👆 is slightly more succinct
handle /prefix/* {
uri strip_prefix /prefix
...
}
A full Caddyfile example, where handle_path
and handle
are mutually exclusive; but, be aware of the subfolder problem
example.com {
# Serve your API, stripping the /api prefix
handle_path /api/* {
reverse_proxy localhost:9000
}
# Serve your static site
handle {
root * /srv
file_server
}
}