How can I find CSS files using golang Gorilla mux

go, gorilla

Solution

You can use http.FileServer for serving all the static files independently of `gorilla/mux`.

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func HomeHandler(rw http.ResponseWriter, r *http.Request) {
    http.ServeFile(rw, r, "index.html")
}

func main() {
    r := mux.NewRouter()

    cssHandler := http.FileServer(http.Dir("./css/"))
    imagesHandler := http.FileServer(http.Dir("./images/"))

    http.Handle("/css/", http.StripPrefix("/css/", cssHandler))
    http.Handle("/images/", http.StripPrefix("/images/", imagesHandler))
    r.HandleFunc("/", HomeHandler)
    http.Handle("/", r)

    log.Println("Server running on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Problem

I'm using Go with Gorilla Mux. This is my webserver.go file ``` package main import ( "log" "net/http" "github.com/gorilla/mux" ) func HomeHandler(rw http.ResponseWriter, r *http.Request) { http.ServeFile(rw, r, "index.html") } func main() { r := mux.NewRouter() r.HandleFunc("/", HomeHandler) http.Handle("/", r) log.Println("Server running on :8080") err := http.ListenAndServe(":8080", r) if err != nil { log.Printf("Error: %s\n", err.Error()) } } ``` In the same folder where the webserver.go file is located is the index.html file. / - here is the index.html /css - All the CSS files /images - All the images, resource files I manage to load the index.html file using the above code but it doesn't seem to load the CSS files and images. inside the index.html file I have. ``` <link rel="stylesheet" type="text/css" href="css/demo.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/animate-custom.css" /> ``` So it should find the css files or do I have to make sure that "Go" can find the css and image folder? How?

Original source