diff --git a/middleware/fastcgi/fastcgi.go b/middleware/fastcgi/fastcgi.go index bc305020..2a57a84b 100644 --- a/middleware/fastcgi/fastcgi.go +++ b/middleware/fastcgi/fastcgi.go @@ -176,7 +176,6 @@ func (h Handler) buildEnv(r *http.Request, rule Rule, fpath string) (map[string] "CONTENT_TYPE": r.Header.Get("Content-Type"), "GATEWAY_INTERFACE": "CGI/1.1", "PATH_INFO": pathInfo, - "PATH_TRANSLATED": filepath.Join(h.AbsRoot, pathInfo), // Info: http://www.oreilly.com/openbook/cgi/ch02_04.html "QUERY_STRING": r.URL.RawQuery, "REMOTE_ADDR": ip, "REMOTE_HOST": ip, // For speed, remote host lookups disabled @@ -198,6 +197,13 @@ func (h Handler) buildEnv(r *http.Request, rule Rule, fpath string) (map[string] "SCRIPT_NAME": scriptName, } + // compliance with the CGI specification that PATH_TRANSLATED + // should only exist if PATH_INFO is defined. + // Info: https://www.ietf.org/rfc/rfc3875 Page 14 + if env["PATH_INFO"] != "" { + env["PATH_TRANSLATED"] = filepath.Join(h.AbsRoot, pathInfo) // Info: http://www.oreilly.com/openbook/cgi/ch02_04.html + } + // Add env variables from config for _, envVar := range rule.EnvVars { env[envVar[0]] = envVar[1]