From a0037b8976d1ea482e1545adfa65403ca43dbb1a Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 7 Jan 2021 09:53:33 -0500 Subject: 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. --- website/cmd/server/main.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/website/cmd/server/main.go b/website/cmd/server/main.go index 84a576858..601ccac5e 100644 --- a/website/cmd/server/main.go +++ b/website/cmd/server/main.go @@ -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. -- cgit v1.2.3