diff --git a/cmd/golangorg/handlers.go b/cmd/golangorg/handlers.go
index 5dc226c..28a3b80 100644
--- a/cmd/golangorg/handlers.go
+++ b/cmd/golangorg/handlers.go
@@ -83,12 +83,8 @@
 	}
 	mux := http.NewServeMux()
 	mux.Handle("/", pres)
-	mux.Handle("/blog/", http.HandlerFunc(blogHandler))
 	mux.Handle("/doc/codewalk/", http.HandlerFunc(codewalk))
-	mux.Handle("/doc/play/", pres.FileServer())
 	mux.Handle("/fmt", http.HandlerFunc(fmtHandler))
-	mux.Handle("/pkg/C/", redirect.Handler("/cmd/cgo/"))
-	mux.Handle("/robots.txt", pres.FileServer())
 	mux.Handle("/x/", http.HandlerFunc(xHandler))
 	redirect.Register(mux)
 
diff --git a/internal/godoc/pres.go b/internal/godoc/pres.go
index a860023..b60e9b6 100644
--- a/internal/godoc/pres.go
+++ b/internal/godoc/pres.go
@@ -86,10 +86,6 @@
 	return p, nil
 }
 
-func (p *Presentation) FileServer() http.Handler {
-	return p.fileServer
-}
-
 func (p *Presentation) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	p.mux.ServeHTTP(w, r)
 }
diff --git a/internal/godoc/util.go b/internal/godoc/util.go
index e3b42f7..ba062a6 100644
--- a/internal/godoc/util.go
+++ b/internal/godoc/util.go
@@ -10,6 +10,7 @@
 import (
 	"io/fs"
 	"path"
+	"strings"
 	"unicode/utf8"
 )
 
@@ -33,21 +34,18 @@
 	return true
 }
 
-// textExt[x] is true if the extension x indicates a text file, and false otherwise.
-var textExt = map[string]bool{
-	".css": false, // must be served raw
-	".js":  false, // must be served raw
-	".svg": false, // must be served raw
-}
-
 // isTextFile reports whether the file has a known extension indicating
 // a text file, or if a significant chunk of the specified file looks like
 // correct UTF-8; that is, if it is likely that the file contains human-
 // readable text.
 func isTextFile(fsys fs.FS, filename string) bool {
-	// if the extension is known, use it for decision making
-	if isText, found := textExt[path.Ext(filename)]; found {
-		return isText
+	// Various special cases must be served raw, not converted to nice HTML.
+	if filename == "robots.txt" || strings.HasPrefix(filename, "doc/play/") {
+		return false
+	}
+	switch path.Ext(filename) {
+	case ".css", ".js", ".svg":
+		return false
 	}
 
 	// the extension is not known; read an initial chunk
diff --git a/internal/redirect/redirect.go b/internal/redirect/redirect.go
index bcfd6a0..d2d8262 100644
--- a/internal/redirect/redirect.go
+++ b/internal/redirect/redirect.go
@@ -95,8 +95,8 @@
 }
 
 var redirects = map[string]string{
-	"/blog":       "/blog/",
-	"/build":      "http://build.golang.org",
+	"/blog":       "https://blog.golang.org",
+	"/build":      "https://build.golang.org",
 	"/change":     "https://go.googlesource.com/go",
 	"/cl":         "https://go-review.googlesource.com",
 	"/cmd/godoc/": "https://pkg.go.dev/golang.org/x/tools/cmd/godoc",
@@ -104,7 +104,7 @@
 	"/issue/new":  "https://github.com/golang/go/issues/new",
 	"/issues":     "https://github.com/golang/go/issues",
 	"/issues/new": "https://github.com/golang/go/issues/new",
-	"/play":       "http://play.golang.org",
+	"/play":       "https://play.golang.org",
 	"/design":     "https://go.googlesource.com/proposal/+/master/design",
 
 	// In Go 1.2 the references page is part of /doc/.
@@ -114,11 +114,12 @@
 	// "/ref/": "/doc/#references",
 
 	// Be nice to people who are looking in the wrong place.
+	"/pkg/C/":   "/cmd/cgo/",
 	"/doc/mem":  "/ref/mem",
 	"/doc/spec": "/ref/spec",
 
-	"/talks": "http://talks.golang.org",
-	"/tour":  "http://tour.golang.org",
+	"/talks": "https://talks.golang.org",
+	"/tour":  "https://tour.golang.org",
 	"/wiki":  "https://github.com/golang/go/wiki",
 
 	"/doc/articles/c_go_cgo.html":                    "/blog/c-go-cgo",
@@ -135,15 +136,16 @@
 	"/doc/articles/laws_of_reflection.html":          "/blog/laws-of-reflection",
 	"/doc/articles/slices_usage_and_internals.html":  "/blog/go-slices-usage-and-internals",
 	"/doc/go_for_cpp_programmers.html":               "/wiki/GoForCPPProgrammers",
-	"/doc/go_tutorial.html":                          "http://tour.golang.org/",
+	"/doc/go_tutorial.html":                          "https://tour.golang.org/",
 }
 
 var prefixHelpers = map[string]string{
 	"issue":  "https://github.com/golang/go/issues/",
 	"issues": "https://github.com/golang/go/issues/",
-	"play":   "http://play.golang.org/",
-	"talks":  "http://talks.golang.org/",
+	"play":   "https://play.golang.org/",
+	"talks":  "https://talks.golang.org/",
 	"wiki":   "https://github.com/golang/go/wiki/",
+	"blog":   "https://blog.golang.org/",
 }
 
 func Handler(target string) http.Handler {
@@ -156,7 +158,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) {
@@ -176,7 +178,7 @@
 }
 
 // Redirect requests from the old "/src/pkg/foo" to the new "/src/foo".
-// See http://golang.org/s/go14nopkg
+// See https://golang.org/s/go14nopkg
 func srcPkgHandler(w http.ResponseWriter, r *http.Request) {
 	r.URL.Path = "/src/" + r.URL.Path[len("/src/pkg/"):]
 	http.Redirect(w, r, r.URL.String(), http.StatusMovedPermanently)
diff --git a/internal/redirect/redirect_test.go b/internal/redirect/redirect_test.go
index 1c9ad64..2f81769 100644
--- a/internal/redirect/redirect_test.go
+++ b/internal/redirect/redirect_test.go
@@ -21,15 +21,21 @@
 
 func TestRedirects(t *testing.T) {
 	var tests = map[string]redirectResult{
-		"/build":    {301, "http://build.golang.org"},
-		"/ref":      {301, "/doc/#references"},
-		"/doc/mem":  {301, "/ref/mem"},
-		"/doc/spec": {301, "/ref/spec"},
-		"/tour":     {301, "http://tour.golang.org"},
-		"/foo":      errorResult(404),
+		"/build":       {301, "https://build.golang.org"},
+		"/ref":         {301, "/doc/#references"},
+		"/doc/mem":     {301, "/ref/mem"},
+		"/doc/spec":    {301, "/ref/spec"},
+		"/tour":        {301, "https://tour.golang.org"},
+		"/foo":         errorResult(404),
+		"/blog":        {301, "https://blog.golang.org"},
+		"/blog/":       {302, "/blog"},
+		"/blog/go1.16": {302, "https://blog.golang.org/go1.16"},
 
 		"/pkg/asn1":           {301, "/pkg/encoding/asn1/"},
 		"/pkg/template/parse": {301, "/pkg/text/template/parse/"},
+		"/pkg/C":              {301, "/pkg/C/"},
+		"/pkg/C/":             {301, "/cmd/cgo/"},
+		"/pkg/C/foo":          {301, "/cmd/cgo/"}, // historical
 
 		"/src/pkg/foo": {301, "/src/foo"},
 
@@ -98,6 +104,7 @@
 
 		if resp.StatusCode != want.status {
 			t.Errorf("(path: %q) got status %d, want %d", path, resp.StatusCode, want.status)
+			continue
 		}
 
 		if want.status != 301 && want.status != 302 {
