diff --git a/server/web/tree.go b/server/web/tree.go index b389e148..fc5a11a2 100644 --- a/server/web/tree.go +++ b/server/web/tree.go @@ -570,9 +570,6 @@ func splitSegment(key string) (bool, []string, string) { param = make([]rune, 0) } else if v == '?' { params = append(params, ":") - } else if v == '.' { - out = append(out, '\\') - out = append(out, v) } else { out = append(out, v) } diff --git a/server/web/tree_test.go b/server/web/tree_test.go index 92a6b7f2..2c41a227 100644 --- a/server/web/tree_test.go +++ b/server/web/tree_test.go @@ -94,9 +94,9 @@ func init() { //not match example // https://github.com/astaxie/beego/issues/3865 - routers = append(routers, notMatchTestInfo("/read_:id:int.htm", "/read_222htm")) - routers = append(routers, notMatchTestInfo("/read_:id:int.htm", "/read_222_htm")) - routers = append(routers, notMatchTestInfo("/read_:id:int.htm", " /read_262shtm")) + routers = append(routers, notMatchTestInfo("/read_:id:int\\.htm", "/read_222htm")) + routers = append(routers, notMatchTestInfo("/read_:id:int\\.htm", "/read_222_htm")) + routers = append(routers, notMatchTestInfo("/read_:id:int\\.htm", " /read_262shtm")) } @@ -323,8 +323,9 @@ func TestSplitSegment(t *testing.T) { ":name:string": {true, []string{":name"}, `([\w]+)`}, ":id([0-9]+)": {true, []string{":id"}, `([0-9]+)`}, ":id([0-9]+)_:name": {true, []string{":id", ":name"}, `([0-9]+)_(.+)`}, - ":id(.+)_cms.html": {true, []string{":id"}, `(.+)_cms\.html`}, - "cms_:id(.+)_:page(.+).html": {true, []string{":id", ":page"}, `cms_(.+)_(.+)\.html`}, + ":id(.+)_cms.html": {true, []string{":id"}, `(.+)_cms.html`}, + ":id(.+)_cms\\.html": {true, []string{":id"}, `(.+)_cms\.html`}, + "cms_:id(.+)_:page(.+).html": {true, []string{":id", ":page"}, `cms_(.+)_(.+).html`}, `:app(a|b|c)`: {true, []string{":app"}, `(a|b|c)`}, `:app\((a|b|c)\)`: {true, []string{":app"}, `(.+)\((a|b|c)\)`}, }