summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go')
-rw-r--r--modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go b/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go
index de6d0a4..0976437 100644
--- a/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go
+++ b/modules/caddyhttp/reverseproxy/fastcgi/fastcgi.go
@@ -195,19 +195,27 @@ func (t Transport) buildEnv(r *http.Request) (map[string]string, error) {
}
fpath := r.URL.Path
+ scriptName := fpath
+ docURI := fpath
// split "actual path" from "path info" if configured
- var docURI, pathInfo string
+ var pathInfo string
if splitPos := t.splitPos(fpath); splitPos > -1 {
docURI = fpath[:splitPos]
pathInfo = fpath[splitPos:]
- } else {
- docURI = fpath
+
+ // Strip PATH_INFO from SCRIPT_NAME
+ scriptName = strings.TrimSuffix(scriptName, pathInfo)
}
- scriptName := fpath
- // Strip PATH_INFO from SCRIPT_NAME
- scriptName = strings.TrimSuffix(scriptName, pathInfo)
+ // Try to grab the path remainder from a file matcher
+ // if we didn't get a split result here.
+ // See https://github.com/caddyserver/caddy/issues/3718
+ if pathInfo == "" {
+ if remainder, ok := repl.GetString("http.matchers.file.remainder"); ok {
+ pathInfo = remainder
+ }
+ }
// SCRIPT_FILENAME is the absolute path of SCRIPT_NAME
scriptFilename := filepath.Join(root, scriptName)