godoc/redirect: allow trailing slashes for prefix handlers

This allows URLs like golang.org/wiki/DevExp/, where before only
golang.org/wiki/DevExp was accepted.

Fixes golang/go#19432.

Change-Id: Ie41a4fe1d1930fd947c1d0523060d08c7c6d6d39
Reviewed-on: https://go-review.googlesource.com/37882
Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
diff --git a/godoc/redirect/redirect.go b/godoc/redirect/redirect.go
index b07d97f..c81d05f 100644
--- a/godoc/redirect/redirect.go
+++ b/godoc/redirect/redirect.go
@@ -150,7 +150,7 @@
 	})
 }
 
-var validId = regexp.MustCompile(`^[A-Za-z0-9-]*$`)
+var validId = regexp.MustCompile(`^[A-Za-z0-9-]*/?$`)
 
 func PrefixHandler(prefix, baseURL string) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
diff --git a/godoc/redirect/redirect_test.go b/godoc/redirect/redirect_test.go
index 5e8045a..8a02de3 100644
--- a/godoc/redirect/redirect_test.go
+++ b/godoc/redirect/redirect_test.go
@@ -50,6 +50,9 @@
 		"/issues/new":               {301, "https://github.com/golang/go/issues/new"},
 		"/issues/1/2/3":             errorResult(404),
 
+		"/wiki/foo":  {302, "https://github.com/golang/go/wiki/foo"},
+		"/wiki/foo/": {302, "https://github.com/golang/go/wiki/foo/"},
+
 		"/design":              {301, "https://github.com/golang/proposal/tree/master/design"},
 		"/design/":             {302, "/design"},
 		"/design/123-foo":      {302, "https://github.com/golang/proposal/blob/master/design/123-foo.md"},