diff --git a/middleware/extensions/ext.go b/middleware/extensions/ext.go index 2444319fd..6796325d8 100644 --- a/middleware/extensions/ext.go +++ b/middleware/extensions/ext.go @@ -31,7 +31,7 @@ type Ext struct { // ServeHTTP implements the middleware.Handler interface. func (e Ext) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { urlpath := strings.TrimSuffix(r.URL.Path, "/") - if path.Ext(urlpath) == "" && r.URL.Path[len(r.URL.Path)-1] != '/' { + if path.Ext(urlpath) == "" && len(r.URL.Path) > 0 && r.URL.Path[len(r.URL.Path)-1] != '/' { for _, ext := range e.Extensions { if resourceExists(e.Root, urlpath+ext) { r.URL.Path = urlpath + ext diff --git a/middleware/extensions/ext_test.go b/middleware/extensions/ext_test.go index 6ca65a4c9..f03eaa2f3 100644 --- a/middleware/extensions/ext_test.go +++ b/middleware/extensions/ext_test.go @@ -30,6 +30,7 @@ func TestExtensions(t *testing.T) { {"/extensions_test/", []string{".html"}, "/extensions_test/"}, {"/extensions_test", []string{".json"}, "/extensions_test"}, {"/another_test", []string{".html"}, "/another_test"}, + {"", []string{".html"}, ""}, } { ex := Ext{ Next: middleware.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) {