From e26a0e83ddb25c40379280f191ff24fb9cc5260f Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Thu, 11 Jul 2024 14:01:51 +0200 Subject: fix wildcard-based redirects --- internal/server/server.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/internal/server/server.go b/internal/server/server.go index 6ef715b..0bbfba4 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -188,7 +188,7 @@ func New(runtimeConfig *Config, log *log.Logger) (*Server, error) { re := regexp.MustCompile( "^(.*)\\." + strings.ReplaceAll(config.WildcardDomain, ".", `\.`) + "$", ) - replace := "${0}." + config.Domains[0] + replace := "${1}." + config.Domains[0] loggingMux.Handle(config.BaseURL.Hostname()+"/", mux) loggingMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if slices.Contains(config.Domains, r.Host) { @@ -196,14 +196,9 @@ func New(runtimeConfig *Config, log *log.Logger) (*Server, error) { newURL := config.BaseURL.JoinPath(path) http.Redirect(w, r, newURL.String(), http.StatusMovedPermanently) } else { - matches := re.FindSubmatchIndex([]byte(r.Host)) - if matches == nil { - http.Redirect(w, r, config.BaseURL.String(), http.StatusTemporaryRedirect) - - return - } - newHost := re.ExpandString([]byte{}, replace, r.Host, matches) - http.Redirect(w, r, string(newHost), http.StatusTemporaryRedirect) + url := config.BaseURL + url.Host = re.ReplaceAllString(r.Host, replace) + http.Redirect(w, r, url.String(), http.StatusTemporaryRedirect) } }) } else { -- cgit 1.4.1