我正在尝试根据Go中的模式重定向URL。如果我的URL包含“ clientApi”,则将其发送到clientApiPoint函数,否则,将其发送到redirectApiPoint函数。我的handleRequest函数是
func handleRequest() {
r := mux.NewRouter()
r.HandleFunc("/", homePage)
r.HandleFunc("/clientApi", clientApiPoint)
r.HandleFunc("/{^((?!clientApi).)*$}", redirectApiPoint)
http.Handle("/", r)
log.Fatal(http.ListenAndServe(":8081", nil))
}
{^((?! clientApi)。)* $}如果我的网址是
,则正则表达式可以正常工作localhost:8081/somerandonurl (sending it to redirectApiPoint func)
但是如果网址中有一个或多个“ /”,则正则表达式不会将其重定向到redirectApiPoint函数。
localhost:8081/somerandonurl/somethingdifferent (not sending it to redirectApiPoint. 404 page not found message)
答案 0 :(得分:1)
由于第一个“ /”,您的Regex在“ localhost:8081 / somerandonurl”上工作,因此匹配。
您需要诸如“ /(.*$)”之类的东西,但这将匹配任何/ blala / blala /...
您可以从此处测试您的正则表达式: Regex