The 127.0.0.1:8084/apidoc/ return a 404 Demo package main
import ( "fmt" "github.com/gorilla/mux" "net/http" ) func main() { //http.Handle("/apidoc/", http.StripPrefix("/apidoc", http.FileServer(http.Dir("api-swagger")))) //if err := http.ListenAndServe(":8082", nil); err != nil { // fmt.Println(err) //} router := mux.NewRouter() router.PathPrefix("/apidoc/").Handler(http.StripPrefix("/apidoc/", http. FileServer(http.Dir("api-swagger")))) if err := http.ListenAndServe(":8084", nil); err != nil { fmt.Println(err) } // //router.Use(mux.CORSMethodMiddleware(router)) } 在2014年1月21日星期二 UTC+8 14:51:37<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 1. set a regular > expression match in your router or 2. use the PathPrefix method on your > router, like: > > 1. myRouter.Handle('/images/{rest}', http.StripPrefix("/images/", > http.FileServer(http.Dir(HomeFolder + "images/")))) > 2. myRouter.PathPrefix("/images/").Handler(http.StripPrefix("/images/", > http.FileServer(http.Dir(HomeFolder + "images/")))) > > On Tuesday, January 21, 2014 5:17:14 AM UTC+1, harvey....@gmail.com wrote: >> >> 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 returns a 404).. >> >> myRouter := mux.NewRouter() >> myRouter.Handle("/images/", http.StripPrefix("/images/", >> http.FileServer(http.Dir(HomeFolder + "images/")))) >> >> this works (the image is shown ok).. >> >> http.Handle("/images/", http.StripPrefix("/images/", >> http.FileServer(http.Dir(HomeFolder + "images/")))) >> >> >> Simple go web server program below, showing the problem... >> >> >> package main >> >> import ( >> "fmt" >> "net/http" >> "io" >> "log" >> "github.com/gorilla/mux" >> ) >> >> const ( >> HomeFolder = "/root/test/" >> ) >> >> func HomeHandler(w http.ResponseWriter, req *http.Request) { >> io.WriteString(w, htmlContents) >> } >> >> func main() { >> >> myRouter := mux.NewRouter() >> myRouter.HandleFunc("/", HomeHandler) >> // >> // The next line, the image route handler results in >> // the test.png image returning a 404. >> // myRouter.Handle("/images/", http.StripPrefix("/images/", >> http.FileServer(http.Dir(HomeFolder + "images/")))) >> // >> myRouter.Host("mydomain.com") >> http.Handle("/", myRouter) >> >> // This method of setting the image route handler works fine. >> // test.png is shown ok. >> http.Handle("/images/", http.StripPrefix("/images/", >> http.FileServer(http.Dir(HomeFolder + "images/")))) >> >> // HTTP - port 80 >> err := http.ListenAndServe(":80", nil) >> >> if err != nil { >> log.Fatal("ListenAndServe: ", err) >> fmt.Printf("ListenAndServe:%s\n", err.Error()) >> } >> } >> >> const htmlContents = `<!DOCTYPE HTML> >> <html lang="en"> >> <head> >> <title>Test page</title> >> <meta charset = "UTF-8" /> >> </head> >> <body> >> <p align="center"> >> <img src="/images/test.png" height="640" width="480"> >> </p> >> </body> >> </html> >> ` >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/d092cb74-9ad9-48d9-9fee-5e305356d211n%40googlegroups.com.