Avoid redirect loops to "/"

fixes #15
diff --git a/router.go b/router.go
index f4fff35..87e1010 100644
--- a/router.go
+++ b/router.go
@@ -275,7 +275,7 @@
 		if handle, ps, tsr := root.getValue(path); handle != nil {
 			handle(w, req, ps)
 			return
-		} else if req.Method != "CONNECT" {
+		} else if req.Method != "CONNECT" && path != "/" {
 			code := 301 // Permanent redirect, request with GET method
 			if req.Method != "GET" {
 				// Temporary redirect, request with same method
@@ -283,7 +283,7 @@
 				code = 307
 			}
 
-			if tsr && r.RedirectTrailingSlash && path != "/" {
+			if tsr && r.RedirectTrailingSlash {
 				if path[len(path)-1] == '/' {
 					req.URL.Path = path[:len(path)-1]
 				} else {
diff --git a/router_test.go b/router_test.go
index b87ef0d..ca59066 100644
--- a/router_test.go
+++ b/router_test.go
@@ -207,6 +207,16 @@
 	if !(w.Code == 307 && fmt.Sprint(w.Header()) == "map[Location:[/path]]") {
 		t.Errorf("Custom NotFound handler failed: Code=%d, Header=%v", w.Code, w.Header())
 	}
+
+	// Test special case where no node for the prefix "/" exists
+	router = New()
+	router.GET("/a", handlerFunc)
+	r, _ = http.NewRequest("GET", "/", nil)
+	w = httptest.NewRecorder()
+	router.ServeHTTP(w, r)
+	if !(w.Code == 404) {
+		t.Errorf("NotFound handling route / failed: Code=%d", w.Code)
+	}
 }
 
 func TestRouterPanicHandler(t *testing.T) {