Serving static content with a root URL with the Gorilla toolkit

go, mux, web-applications

Solution

I think you might be looking for `PathPrefix`...

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
    http.ListenAndServe(":8100", r)
}

Problem

I am attempting to use the Gorilla toolkit's `mux` package to route URLs in a Go web server. Using this question as a guide I have the following Go code: ``` func main() { r := mux.NewRouter() r.Handle("/", http.FileServer(http.Dir("./static/"))) r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) http.Handle("/", r) http.ListenAndServe(":8100", nil) } ``` The directory structure is: ``` ... main.go static\ | index.html | js\ | <js files> | css\ | <css files> ``` The Javascript and CSS files are referenced in `index.html` like this: ``` ... <link rel="stylesheet" href="css/redmond/jquery-ui.min.css"/> <script src="js/jquery.min.js"></script> ... ``` When I access `http://localhost:8100` in my web browser the `index.html` content is delivered successfully, however, all the `js` and `css` URLs return 404s. How can I get the program to serve files out of `static` sub-directories?

Original source

Related problems