|
@@ -7,6 +7,8 @@ import (
|
|
|
"net/http"
|
|
|
"net/http/pprof"
|
|
|
"os"
|
|
|
+ "path"
|
|
|
+ "regexp"
|
|
|
"runtime"
|
|
|
runtimePprof "runtime/pprof"
|
|
|
"strconv"
|
|
@@ -215,7 +217,7 @@ func (s *Server) RunBase(addr string, mux *http.ServeMux) {
|
|
|
mux.Handle("/", s)
|
|
|
|
|
|
s.Logger.Infof("http server is listening %s", addr)
|
|
|
- err := endless.ListenAndServe(addr, mux, func() {})
|
|
|
+ err := endless.ListenAndServe(addr, s.Handler(mux), func() {})
|
|
|
if err != nil {
|
|
|
s.Logger.Error("ListenAndServe:", err)
|
|
|
}
|
|
@@ -271,7 +273,7 @@ func (s *Server) Run(addr string) {
|
|
|
mux.Handle("/", s)
|
|
|
|
|
|
s.Logger.Infof("http server is listening %s", addr)
|
|
|
- err := endless.ListenAndServe(addr, mux, func() {})
|
|
|
+ err := endless.ListenAndServe(addr, s.Handler(mux), func() {})
|
|
|
if err != nil {
|
|
|
s.Logger.Error("ListenAndServe:", func() {})
|
|
|
}
|
|
@@ -360,3 +362,17 @@ func (s *Server) App(name string) *App {
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func (s *Server) Handler(mux *http.ServeMux) http.Handler {
|
|
|
+ keepOriginalUrl, _ := s.GetConfig("keepOriginalUrl").(string)
|
|
|
+ if keepOriginalUrl == "" {
|
|
|
+ return mux
|
|
|
+ }
|
|
|
+ keepOriginalUrlReg := regexp.MustCompile(keepOriginalUrl)
|
|
|
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
|
+ if keepOriginalUrlReg.MatchString(r.URL.Path) {
|
|
|
+ r.URL.Path = path.Clean(r.URL.Path)
|
|
|
+ }
|
|
|
+ mux.ServeHTTP(w, r)
|
|
|
+ })
|
|
|
+}
|