Introduce new Replacer fields {rewrite_path}, {rewrite_path_escaped}; issue #1185 (#1364)

* Fix #1185

* Return normal path if no rewrite has happened

* Revert change, not required

* Updated tests
This commit is contained in:
Toby Allen
2017-01-24 05:15:27 +00:00
committed by Matt Holt
parent 59e6ceb518
commit bbee961415
3 changed files with 20 additions and 2 deletions

View File

@@ -223,8 +223,22 @@ func (r *replacer) getSubstitution(key string) string {
}
return host
case "{path}":
return r.request.URL.Path
// if a rewrite has happened, the original URI should be used as the path
// rather than the rewritten URI
path := r.request.Header.Get("Caddy-Rewrite-Original-URI")
if path == "" {
path = r.request.URL.Path
}
return path
case "{path_escaped}":
path := r.request.Header.Get("Caddy-Rewrite-Original-URI")
if path == "" {
path = r.request.URL.Path
}
return url.QueryEscape(path)
case "{rewrite_path}":
return r.request.URL.Path
case "{rewrite_path_escaped}":
return url.QueryEscape(r.request.URL.Path)
case "{query}":
return r.request.URL.RawQuery