Search code examples
gogorillamux

setup 404 NotFound handler on a gorilla mux router


Here is my code about a small demonstration webserver written with the Go language and the gorilla mux package :

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    fmt.Fprintf(w, "Hi there, I love %s!", vars["username"])
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    vars := mux.Vars(r)
    fmt.Fprintf(w, "Hi there, I love %s!", vars["username"])
}

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/help/{username}/", handler)
    http.Handle("/", r)
    http.ListenAndServe(":8080", nil)
}

But I don't find a way on how to implement a custom 404 page.

But I can't make a r.HandleFunc("/",...) but it will be too greedy.


Solution

  • The Router exports a NotFoundHandler field which you can set to your custom handler.

    r := mux.NewRouter()
    r.NotFoundHandler = MyCustom404Handler