Golang Gorilla mux with http.FileServer returning 404

后端 未结 2 1486
面向向阳花
面向向阳花 2020-12-14 06:25

The problem I\'m seeing is that I\'m trying to use the http.FileServer with the Gorilla mux Router.Handle function.

This doesn\'t work (the image return

2条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-14 06:57

    I posted this on golang-nuts discussion group and got this solution from Toni Cárdenas ...

    The standard net/http ServeMux (which is the standard handler you are using when you use http.Handle) and the mux Router have different ways of matching an address.

    See the differences between http://golang.org/pkg/net/http/#ServeMux and http://godoc.org/github.com/gorilla/mux.

    So basically, http.Handle('/images/', ...) matches '/images/whatever', while myRouter.Handle('/images/', ...) only matches '/images/', and if you want to handle '/images/whatever', you have to ...

    Option 1 - Use a regular expression match in your router

    myRouter.Handle("/images/{rest}",
         http.StripPrefix("/images/", http.FileServer(http.Dir(HomeFolder + "images/"))))
    

    Option 2 - Use the PathPrefix method on your router:

    myRouter.PathPrefix("/images/").Handler(http.StripPrefix("/images/", 
         http.FileServer(http.Dir(HomeFolder + "images/"))))
    

提交回复
热议问题