mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-26 06:04:05 -08:00
Merge pull request #726 from prometheus/improve-redirections
Improve web redirection and 404 behavior.
This commit is contained in:
commit
837ffcea29
24
web/web.go
24
web/web.go
|
@ -65,9 +65,21 @@ func (ws WebService) ServeForever(pathPrefix string) {
|
||||||
http.Error(w, "", 404)
|
http.Error(w, "", 404)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
http.Handle(pathPrefix, prometheus.InstrumentHandler(
|
http.HandleFunc("/", prometheus.InstrumentHandlerFunc(pathPrefix, func(rw http.ResponseWriter, req *http.Request) {
|
||||||
pathPrefix, ws.StatusHandler,
|
// The "/" pattern matches everything, so we need to check
|
||||||
))
|
// that we're at the root here.
|
||||||
|
if req.URL.Path == pathPrefix {
|
||||||
|
ws.StatusHandler.ServeHTTP(rw, req)
|
||||||
|
} else if req.URL.Path == strings.TrimRight(pathPrefix, "/") {
|
||||||
|
http.Redirect(rw, req, pathPrefix, http.StatusFound)
|
||||||
|
} else if !strings.HasPrefix(req.URL.Path, pathPrefix) {
|
||||||
|
// We're running under a prefix but the user requested something
|
||||||
|
// outside of it. Let's see if this page exists under the prefix.
|
||||||
|
http.Redirect(rw, req, pathPrefix+strings.TrimLeft(req.URL.Path, "/"), http.StatusFound)
|
||||||
|
} else {
|
||||||
|
http.NotFound(rw, req)
|
||||||
|
}
|
||||||
|
}))
|
||||||
http.Handle(pathPrefix+"alerts", prometheus.InstrumentHandler(
|
http.Handle(pathPrefix+"alerts", prometheus.InstrumentHandler(
|
||||||
pathPrefix+"alerts", ws.AlertsHandler,
|
pathPrefix+"alerts", ws.AlertsHandler,
|
||||||
))
|
))
|
||||||
|
@ -103,12 +115,6 @@ func (ws WebService) ServeForever(pathPrefix string) {
|
||||||
http.Handle(pathPrefix+"-/quit", http.HandlerFunc(ws.quitHandler))
|
http.Handle(pathPrefix+"-/quit", http.HandlerFunc(ws.quitHandler))
|
||||||
}
|
}
|
||||||
|
|
||||||
if pathPrefix != "/" {
|
|
||||||
http.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
http.Redirect(w, r, pathPrefix, http.StatusFound)
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Infof("Listening on %s", *listenAddress)
|
log.Infof("Listening on %s", *listenAddress)
|
||||||
|
|
||||||
// If we cannot bind to a port, retry after 30 seconds.
|
// If we cannot bind to a port, retry after 30 seconds.
|
||||||
|
|
Loading…
Reference in a new issue