首页 > 解决方案 > 在正则表达式中排除网站图标

问题描述

我有一个在 url 中使用状态的网站,比如

/alabama
/alaska

但是 favicon 使用的是相同的路径。

/favicon.ico

这是路线:

router.HandleFunc("/{[a-z]+\b*[favicon.ico]\b}", stateHandler).Methods("GET")

favicon 没有被排除在模式之外。

有任何想法吗?

标签: regexgo

解决方案


如前所述Peter,您可以为路由注册http.NotFoundHandler/favicon.ico

router.HandleFunc("/favicon.ico", http.NotFoundHandler).Methods("GET")

也可以写中间件

// Middleware function, which will be called for each request
func FaviconMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if (!strings.Contains(r.URL.Path, "favicon.ico")) {
            http.NotFoundHandler()
        }
        else {
            next.ServeHTTP(w, r)          
        }
    })
}
r.Use(FaviconMiddleware)

推荐阅读