diff options
author | Andrew Gerrand <adg@golang.org> | 2012-03-27 12:44:17 +1100 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2012-03-27 12:44:17 +1100 |
commit | 849ad2d0cac9b3ee97b3d331ca6e556a6073d94d (patch) | |
tree | 95e29bf36e42d5f123596830bceb1c3b6924336b | |
parent | 98155bd6a9547f8aa38cb4f71c4cbce7d1c9884a (diff) | |
download | go-849ad2d0cac9b3ee97b3d331ca6e556a6073d94d.tar.gz go-849ad2d0cac9b3ee97b3d331ca6e556a6073d94d.zip |
cmd/godoc: canonicalize custom path redirects
For example, /ref and /doc/reference.html now both redirect to /ref/.
Fixes #3401.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5916044
-rw-r--r-- | src/cmd/godoc/godoc.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go index 26814d2fa3..f21c20496c 100644 --- a/src/cmd/godoc/godoc.go +++ b/src/cmd/godoc/godoc.go @@ -1315,7 +1315,18 @@ func refreshMetadataLoop() { // func metadataFor(relpath string) *Metadata { if m, _ := docMetadata.get(); m != nil { - return m.(map[string]*Metadata)[relpath] + meta := m.(map[string]*Metadata) + // If metadata for this relpath exists, return it. + if p := meta[relpath]; p != nil { + return p + } + // Try with or without trailing slash. + if strings.HasSuffix(relpath, "/") { + relpath = relpath[:len(relpath)-1] + } else { + relpath = relpath + "/" + } + return meta[relpath] } return nil } |