我正在开发一个golang应用程序,我正在使用Gorilla Mux,我想将HTTP请求重定向到HTTPS
这是我到目前为止所拥有的
package main import ( "net/http" "github.com/gorilla/mux" "github.com/zolamk/deviant/handlers" "github.com/zolamk/deviant/lib" ) func main() { router := mux.NewRouter() // this is where i am trying to redirect router.PathPrefix("/").Schemes("HTTP").HandlerFunc(func(res http.ResponseWriter, req *http.Request) { http.Redirect(res, req, fmt.Sprintf("https://%s", req.URL), http.StatusSeeOther) }) router.Handle("/", handlers.ContextHandler(handlers.Index)).Methods("GET") router.Handle("/register/", handlers.ContextHandler(handlers.Register)).Methods("GET") router.Handle("/register/", handlers.ContextHandler(handlers.RegisterPost)).Methods("POST") router.Handle("/login/", handlers.ContextHandler(handlers.Login)).Methods("GET") router.Handle("/login/", handlers.ContextHandler(handlers.LoginPost)).Methods("POST") router.Handle("/logout/", handlers.ContextHandler(handlers.Logout)).Methods("GET") if lib.Settings.ServeStatic { router.PathPrefix("/public/").Handler(http.FileServer(http.Dir("./"))) } router.NotFoundHandler = handlers.ContextHandler(handlers.NotFound) log.Printf("Deviant running @ http://%s\n", lib.Settings.Address) loggedRouter := handlers.LoggedRouter(os.Stdout, router) log.Fatal(http.ListenAndServe(lib.Settings.Address, loggedRouter)) }
就像我之前说过如何将HTTP流量重定向到HTTPS而不影响我的其他路由?谢谢.
在单独的go例程中,在另一个端口上启动另一个HTTP处理程序
go http.ListenAndServe(":80", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "https://"+r.Host+r.URL.String(), http.StatusMovedPermanently) }))