aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/http/server.go')
-rw-r--r--src/net/http/server.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/net/http/server.go b/src/net/http/server.go
index cf0bd0a91d..6fdcd51c0a 100644
--- a/src/net/http/server.go
+++ b/src/net/http/server.go
@@ -2759,9 +2759,12 @@ func (mux *ServeMux) matchOrRedirect(host, method, path string, u *url.URL) (_ *
defer mux.mu.RUnlock()
n, matches := mux.tree.match(host, method, path)
- // If we have an exact match, or we were asked not to try trailing-slash redirection,
- // or the URL already has a trailing slash, then we're done.
- if !exactMatch(n, path) && u != nil && !strings.HasSuffix(path, "/") {
+ // We can terminate here if any of the following is true:
+ // - We have an exact match already.
+ // - We were asked not to try trailing slash redirection.
+ // - The URL already has a trailing slash.
+ // - The URL is an empty string.
+ if !exactMatch(n, path) && u != nil && !strings.HasSuffix(path, "/") && path != "" {
// If there is an exact match with a trailing slash, then redirect.
path += "/"
n2, _ := mux.tree.match(host, method, path)