如何处理任何以Go中的某个URL开头的URL?

时间:2016-12-09 15:14:10

标签: go

您好我在go中使用gorilla / mux,我想处理以下开头的所有网址:“/ a / b / c”

我试过了:

router := mux.NewRouter().StrictSlash(true)
router.HandleFunc(`/a/b/{_dummy:c(\/)?.*}`, Func1)

即url可以是/ a / b / c / d或/ a / b / c / d / e

1 个答案:

答案 0 :(得分:3)

根据gorilla / mux的文档:http://www.gorillatoolkit.org/pkg/mux#Route.PathPrefix

func (r *Router) PathPrefix(tpl string) *Route
  

PathPrefix使用URL路径的匹配器注册新路由   字首。请参阅Route.PathPrefix()。

func (r *Route) PathPrefix(tpl string) *Route
  

PathPrefix为URL路径前缀添加匹配器。这匹配如果   给定模板是完整URL路径的前缀。请参阅Route.Path()   有关tpl论点的详细信息。

     

请注意,它不会特别处理斜杠(" / foobar /"将会   与前缀" / foo")匹配,因此您可能希望使用尾部斜杠   这里。

     

另请注意,Router.StrictSlash()的设置不起作用   具有PathPrefix匹配器的路由。

  

请注意,提供给PathPrefix()的路径代表一个"通配符":   调用PathPrefix(" / static /")。处理程序(...)表示处理程序   将传递符合" / static / *"。

的任何请求

所以你要找的是:

router := mux.NewRouter()
router.PathPrefix("/a/b/c/").HandleFunc(proxy.GrafanaHandler) // matches /a/b/c/*