This page is about Caddy 2, which is currently in beta. Click here for the old Caddy 1 site. Thank you for your patience as we transition!
Documentation

uri

Manipulates a request's URI. It can strip path prefix/suffix or replace substrings on the whole URI.

This directive is distinct from rewrite in that uri partially changes the URI, rather than setting it to something completely different as rewrite does. While rewrite is treated specially as an internal redirect, uri is just another handler.

Syntax

uri [<matcher>] strip_prefix|strip_suffix|replace \
	<target> \
	[<replacement> [<limit>]]
  • The first (non-matcher) argument specifies the operation:
    • strip_prefix strips a prefix from the path, if it has the prefix.
    • strip_suffix strips a suffix from the path, if it has the suffix.
    • replace performs a substring replacement across the whole URI.
  • <target> is the prefix, suffix, or search string/regular expression. If a prefix, the leading forward slash may be omitted, since paths always start with a forward slash.
  • <replacement> is the replacement string (only valid with replace).
  • <limit> is an optional limit to the maximum number of replacements (only valid with replace).

Examples

Strip /api from the beginning of all request paths:

uri strip_prefix /api

Strip .php from the end of all request paths:

uri strip_suffix .php

Replace "/docs/" with "/v1/docs/" in any request URI:

uri replace /docs/ /v1/docs/