diff --git a/cmd/frontend/main.go b/cmd/frontend/main.go
index 11bcaa7..f1f841b 100644
--- a/cmd/frontend/main.go
+++ b/cmd/frontend/main.go
@@ -199,7 +199,7 @@
 	// We are not currently forwarding any ports on AppEngine, so serving debug
 	// information is broken.
 	if !serverconfig.OnAppEngine() {
-		dcensusServer, err := dcensus.NewServer()
+		dcensusServer, err := dcensus.DebugHandler()
 		if err != nil {
 			log.Fatal(ctx, err)
 		}
diff --git a/cmd/worker/main.go b/cmd/worker/main.go
index 2383130..27b37cc 100644
--- a/cmd/worker/main.go
+++ b/cmd/worker/main.go
@@ -136,15 +136,6 @@
 	if err := dcensus.Init(cfg, views...); err != nil {
 		log.Fatal(ctx, err)
 	}
-	// We are not currently forwarding any ports on AppEngine, so serving debug
-	// information is broken.
-	if !serverconfig.OnAppEngine() {
-		dcensusServer, err := dcensus.NewServer()
-		if err != nil {
-			log.Fatal(ctx, err)
-		}
-		go http.ListenAndServe(cfg.DebugAddr("localhost:8001"), dcensusServer)
-	}
 
 	iap := middleware.Identity()
 	if aud := os.Getenv("GO_DISCOVERY_IAP_AUDIENCE"); aud != "" {
@@ -159,6 +150,12 @@
 	)
 	http.Handle("/", mw(router))
 
+	dh, err := server.DebugHandler()
+	if err != nil {
+		log.Fatal(ctx, err)
+	}
+	http.Handle("/debug/", mw(http.StripPrefix("/debug", dh)))
+
 	addr := cfg.HostAddr("localhost:8000")
 	log.Infof(ctx, "Timeout is %d minutes", timeout)
 	log.Infof(ctx, "Listening on addr %s", addr)
diff --git a/internal/dcensus/dcensus.go b/internal/dcensus/dcensus.go
index f67de36..1447a0d 100644
--- a/internal/dcensus/dcensus.go
+++ b/internal/dcensus/dcensus.go
@@ -71,12 +71,6 @@
 	r.Handle(route, handler)
 }
 
-const debugPage = `
-<html>
-<p><a href="/tracez">/tracez</a> - trace spans</p>
-<p><a href="/statsz">/statz</a> - prometheus metrics page</p>
-`
-
 // Init configures tracing and aggregation according to the given Views. If
 // running on GCP, Init also configures exporting to StackDriver.
 func Init(cfg *config.Config, views ...*view.View) error {
@@ -91,19 +85,15 @@
 	return nil
 }
 
-// NewServer creates a new http.Handler for serving debug information.
-func NewServer() (http.Handler, error) {
+// DebugHandler creates a new http.Handler for serving debug information.
+func DebugHandler() (http.Handler, error) {
 	pe, err := prometheus.NewExporter(prometheus.Options{})
 	if err != nil {
 		return nil, fmt.Errorf("dcensus.NewServer: prometheus.NewExporter: %v", err)
 	}
 	mux := http.NewServeMux()
 	zpages.Handle(mux, "/")
-	mux.Handle("/statsz", pe)
-	mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
-		fmt.Fprint(w, debugPage)
-	})
-
+	mux.Handle("/statz", pe)
 	return mux, nil
 }
 
diff --git a/internal/worker/pages.go b/internal/worker/pages.go
index fbd5401..dd9c13c 100644
--- a/internal/worker/pages.go
+++ b/internal/worker/pages.go
@@ -37,31 +37,16 @@
 // doIndexPage writes the status page. On error it returns the error and a short
 // string to be written back to the client.
 func (s *Server) doIndexPage(w http.ResponseWriter, r *http.Request) (err error) {
+	if r.URL.Path != "/" {
+		http.NotFound(w, r)
+		return nil
+	}
 	defer derrors.Wrap(&err, "doIndexPage")
-	var (
-		experiments []*internal.Experiment
-		excluded    []string
-	)
+	var experiments []*internal.Experiment
 	if s.getExperiments != nil {
 		experiments = s.getExperiments()
 	}
-	g, ctx := errgroup.WithContext(r.Context())
-	g.Go(func() error {
-		var err error
-		excluded, err = s.db.GetExcludedPatterns(ctx)
-		if err != nil {
-			return annotation{err, "error fetching excluded"}
-		}
-		return nil
-	})
-	if err := g.Wait(); err != nil {
-		var e annotation
-		if errors.As(err, &e) {
-			log.Errorf(ctx, e.msg, err)
-		}
-		return err
-	}
-
+	ctx := r.Context()
 	gms := memory.ReadRuntimeStats()
 	sms, err := memory.ReadSystemStats()
 	if err != nil {
@@ -97,7 +82,6 @@
 		Hostname        string
 		StartTime       time.Time
 		Experiments     []*internal.Experiment
-		Excluded        []string
 		LoadShedStats   LoadShedStats
 		GoMemStats      runtime.MemStats
 		ProcessStats    memory.ProcessStats
@@ -114,7 +98,6 @@
 		Hostname:       os.Getenv("HOSTNAME"),
 		StartTime:      startTime,
 		Experiments:    experiments,
-		Excluded:       excluded,
 		LoadShedStats:  s.ZipLoadShedStats(),
 		GoMemStats:     gms,
 		ProcessStats:   pms,
@@ -208,6 +191,20 @@
 	}
 	return renderPage(ctx, w, page, s.templates[versionsTemplate])
 }
+func (s *Server) doExcludedPage(w http.ResponseWriter, r *http.Request) (err error) {
+	excluded, err := s.db.GetExcludedPatterns(r.Context())
+	if err != nil {
+		return annotation{err, "error fetching excluded"}
+	}
+	page := struct {
+		Env      string
+		Excluded []string
+	}{
+		Env:      env(s.cfg),
+		Excluded: excluded,
+	}
+	return renderPage(r.Context(), w, page, s.templates[excludedTemplate])
+}
 
 func env(cfg *config.Config) string {
 	e := cfg.DeploymentEnvironment()
diff --git a/internal/worker/server.go b/internal/worker/server.go
index 1f65091..9b4be95 100644
--- a/internal/worker/server.go
+++ b/internal/worker/server.go
@@ -28,6 +28,7 @@
 	"golang.org/x/pkgsite/internal/cache"
 	"golang.org/x/pkgsite/internal/config"
 	"golang.org/x/pkgsite/internal/config/serverconfig"
+	"golang.org/x/pkgsite/internal/dcensus"
 	"golang.org/x/pkgsite/internal/derrors"
 	"golang.org/x/pkgsite/internal/godoc/dochtml"
 	"golang.org/x/pkgsite/internal/index"
@@ -77,6 +78,7 @@
 const (
 	indexTemplate    = "index.tmpl"
 	versionsTemplate = "versions.tmpl"
+	excludedTemplate = "excluded.tmpl"
 )
 
 // NewServer creates a new Server with the given dependencies.
@@ -90,12 +92,17 @@
 	if err != nil {
 		return nil, err
 	}
+	t3, err := parseTemplate(scfg.StaticPath, template.TrustedSourceFromConstant(excludedTemplate))
+	if err != nil {
+		return nil, err
+	}
 	ts := template.TrustedSourceJoin(scfg.StaticPath)
 	tfs := template.TrustedFSFromTrustedSource(ts)
 	dochtml.LoadTemplates(tfs)
 	templates := map[string]*template.Template{
 		indexTemplate:    t1,
 		versionsTemplate: t2,
+		excludedTemplate: t3,
 	}
 	var c *cache.Cache
 	if scfg.RedisCacheClient != nil {
@@ -149,7 +156,7 @@
 	// and for /_ah/warmup at
 	// https://cloud.google.com/appengine/docs/standard/go/configuring-warmup-requests.
 	handle("/_ah/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		log.Infof(r.Context(), "Request made to %q", r.URL.Path)
+		log.Errorf(r.Context(), "Request made to %q", r.URL.Path)
 	}))
 
 	// scheduled: poll polls the Module Index for new modules
@@ -239,9 +246,6 @@
 
 	handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(s.staticPath.String()))))
 
-	// returns an HTML page displaying information about recent versions that were processed.
-	handle("/versions", http.HandlerFunc(s.handleHTMLPage(s.doVersionsPage)))
-
 	// Health check.
 	handle("/healthz", http.HandlerFunc(s.handleHealthCheck))
 
@@ -253,6 +257,25 @@
 	handle("/", http.HandlerFunc(s.handleHTMLPage(s.doIndexPage)))
 }
 
+func (s *Server) DebugHandler() (http.Handler, error) {
+
+	// Serve census debug handlers.
+	h, err := dcensus.DebugHandler()
+	if err != nil {
+		return nil, err
+	}
+	mux := http.NewServeMux()
+	mux.Handle("/", h)
+
+	// Serve an HTML page displaying information about recent versions that were processed.
+	mux.Handle("/versions", http.HandlerFunc(s.handleHTMLPage(s.doVersionsPage)))
+
+	// Serve a list of excluded prefixes and module versions.
+	mux.Handle("/excluded", http.HandlerFunc(s.handleHTMLPage(s.doExcludedPage)))
+
+	return mux, nil
+}
+
 // handleUpdateImportedByCount updates imported_by_count for all packages.
 func (s *Server) handleUpdateImportedByCount(w http.ResponseWriter, r *http.Request) error {
 	batchSize := parseIntParam(r, "batch", 1000)
@@ -532,7 +555,7 @@
 func (s *Server) handleHTMLPage(f func(w http.ResponseWriter, r *http.Request) error) http.HandlerFunc {
 	return func(w http.ResponseWriter, r *http.Request) {
 		if err := f(w, r); err != nil {
-			log.Errorf(r.Context(), "handleHTMLPage", err)
+			log.Errorf(r.Context(), "handleHTMLPage: %v", err)
 			http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
 		}
 	}
diff --git a/static/worker/excluded.tmpl b/static/worker/excluded.tmpl
new file mode 100644
index 0000000..91e8ae7
--- /dev/null
+++ b/static/worker/excluded.tmpl
@@ -0,0 +1,28 @@
+<!--
+  Copyright 2024 The Go Authors. All rights reserved.
+  Use of this source code is governed by a BSD-style
+  license that can be found in the LICENSE file.
+-->
+
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<link href="/static/worker/worker.min.css" rel="stylesheet">
+<title>{{.Env}} Worker Excluded</title>
+
+<body>
+  <div>
+    <h3>Excluded Prefixes and Versions</h3>
+    {{if .Excluded}}
+      <table>
+        <tbody>
+        {{range .Excluded}}
+          <tr><td>{{.}}</td></tr>
+        {{end}}
+        </tbody>
+      </table>
+    {{else}}
+      <p>No excluded prefixes.</p>
+    {{end}}
+  </div>
+</body>
diff --git a/static/worker/index.tmpl b/static/worker/index.tmpl
index d2e99fb..687f44b 100644
--- a/static/worker/index.tmpl
+++ b/static/worker/index.tmpl
@@ -15,12 +15,6 @@
   <p>All times in America/New_York.</p>
 
   <p>
-    <a href="/">
-      Home
-    </a> |
-    <a href="/versions">
-      Recent Versions
-    </a> |
     <a href="https://cloud.google.com/console/cloudtasks/queue/{{.LocationID}}/{{.ResourcePrefix}}fetch-tasks?project={{.Config.ProjectID}}"
     target="_blank" rel="noreferrer">
      Task Queue
@@ -35,6 +29,14 @@
     </a>
   </p>
 
+  <p>
+    <a href="/debug/versions">Modules</a> |
+    <a href="/debug/tracez">Traces</a> |
+    <a href="/debug/rpcz">RPCs</a> |
+    <a href="/debug/statz">Metrics</a> |
+    <a href="/debug/excluded">Excluded</a>
+  </p>
+
   <div>
     <form action="/poll" method="post" name="pollForm">
       <button title="Poll the module index for up to 2000 new versions."
@@ -181,23 +183,6 @@
     </table>
   </div>
 
-  <div>
-    <h3>Excluded Prefixes</h3>
-    {{if .Excluded}}
-      <table>
-        <thead>
-          <tr><th>Prefix</th></tr>
-        </thead>
-        <tbody>
-        {{range .Excluded}}
-          <tr><td>{{.}}</td></tr>
-        {{end}}
-        </tbody>
-      </table>
-    {{else}}
-      <p>No excluded prefixes.</p>
-    {{end}}
-  </div>
 </body>
 
 <script>
