“空白响应” NotFoundHandler无法正常工作

I am trying to debug 404-not-found by writing a custom not-found handler. Here is my code.

package main

import (
  "database/sql"
  "encoding/json"
  "fmt"
  "log"
  "net/http"

  "github.com/coopernurse/gorp"
  _ "github.com/go-sql-driver/mysql"
  "github.com/gorilla/mux"
)

func main() {

  // Create a MUX
  r := mux.NewRouter()
  http.Handle("/", r)
  r.NotFoundHandler = http.HandlerFunc(NotFound)

  // Static
  r.PathPrefix("/app").HandlerFunc(uiAppHandler)
  err := http.ListenAndServe(":8080", nil)
  if err != nil {
    log.Fatal(err)
  }
}

func NotFound(w http.ResponseWriter, r *http.Request) {
  fmt.Fprint(w, "custom 404")
}

func uiAppHandler(w http.ResponseWriter, r *http.Request) {
  repoFrontend1 := "/UI/KD/WebContent"
  http.StripPrefix("/app/", http.FileServer(http.Dir(repoFrontend1)))
}

I am getting a blank response for both existing and non-existing files. I guess NotFound is not getting triggered because of my "/" handler. Then how do I handle notFound for http.Dir?

Here is my directory structure enter image description here

The response from uiAppHandler is blank because the function does not write to the response w. You should register the file server handler directly with the mux instead of trying to create a handler:

r.PathPrefix("/app").Handler(http.StripPrefix("/app/", http.FileServer(http.Dir(repoFrontend1))))

The mux passes all requests with the prefix "/app" to the handler registered for that prefix. All requests with that prefix are found as far as the mux is concerned. The http.FileServer or whatever you register for that prefix is responsible for generating the 404 response.