website: redirect module to pkg.go.dev

Add redirects from any module package path to its corressponding
pkg.go.dev documentation. e.g., gvisor.dev/gvisor/pkg/sentry/kernel ->
https://pkg.go.dev/gvisor.dev/gvisor/pkg/sentry/kernel.

This is a handy way to get to documentation, also used by other vanity
domains, like golang.org/x/tools.
This commit is contained in:
Michael Pratt
2021-01-07 09:53:33 -05:00
parent 776016ac64
commit a0037b8976
+12 -1
View File
@@ -171,7 +171,7 @@ func redirectHandler(target string) http.Handler {
})
}
// redirectRedirects registers redirect http handlers.
// registerRedirects registers redirect http handlers.
func registerRedirects(mux *http.ServeMux) {
for prefix, baseURL := range prefixHelpers {
p := "/" + prefix + "/"
@@ -180,6 +180,17 @@ func registerRedirects(mux *http.ServeMux) {
for path, redirect := range redirects {
mux.Handle(path, hostRedirectHandler(wrappedHandler(redirectHandler(redirect))))
}
registerModuleDocRedirects(http.DefaultServeMux)
}
// registerModuleDocs registers redirect http handlers to redirect module paths
// directly to their docs on pkg.go.dev.
func registerModuleDocRedirects(mux *http.ServeMux) {
const prefix = "/gvisor/"
mux.Handle(prefix, hostRedirectHandler(wrappedHandler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
pkg := r.URL.Path[len(prefix):]
redirectWithQuery(w, r, fmt.Sprintf("https://pkg.go.dev/gvisor.dev/gvisor/%s", pkg))
}))))
}
// registerStatic registers static file handlers.