aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gerrand <adg@golang.org>2012-03-27 12:44:17 +1100
committerAndrew Gerrand <adg@golang.org>2012-03-27 12:44:17 +1100
commit849ad2d0cac9b3ee97b3d331ca6e556a6073d94d (patch)
tree95e29bf36e42d5f123596830bceb1c3b6924336b
parent98155bd6a9547f8aa38cb4f71c4cbce7d1c9884a (diff)
downloadgo-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.go13
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
}