Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-06-05 13:13:26 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-06-06 13:37:42 +0300
commitfc0f13b68451a09a6d6b4ce50c4217313b664176 (patch)
tree4724bd44fb1cec3626590ce2a99fbc26d7083251 /commands
parent7eeebe1e5a86a4ad622bc41f88fcb93b619f5a16 (diff)
commands: Fix URL rewrites vs fast render server mode
Fixes #7357
Diffstat (limited to 'commands')
-rw-r--r--commands/server.go21
1 files changed, 12 insertions, 9 deletions
diff --git a/commands/server.go b/commands/server.go
index ee3d25a41..602527253 100644
--- a/commands/server.go
+++ b/commands/server.go
@@ -368,15 +368,19 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro
w.Header().Set("Pragma", "no-cache")
}
- for _, header := range f.c.serverConfig.MatchHeaders(r.RequestURI) {
+ // Ignore any query params for the operations below.
+ requestURI := strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery)
+
+ for _, header := range f.c.serverConfig.MatchHeaders(requestURI) {
w.Header().Set(header.Key, header.Value)
}
- if redirect := f.c.serverConfig.MatchRedirect(r.RequestURI); !redirect.IsZero() {
+ if redirect := f.c.serverConfig.MatchRedirect(requestURI); !redirect.IsZero() {
// This matches Netlify's behaviour and is needed for SPA behaviour.
// See https://docs.netlify.com/routing/redirects/rewrites-proxies/
if redirect.Status == 200 {
if r2 := f.rewriteRequest(r, strings.TrimPrefix(redirect.To, u.Path)); r2 != nil {
+ requestURI = redirect.To
r = r2
}
} else {
@@ -389,20 +393,19 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro
if f.c.fastRenderMode && f.c.buildErr == nil {
- p := strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery)
- if strings.HasSuffix(p, "/") || strings.HasSuffix(p, "html") || strings.HasSuffix(p, "htm") {
- if !f.c.visitedURLs.Contains(p) {
+ if strings.HasSuffix(requestURI, "/") || strings.HasSuffix(requestURI, "html") || strings.HasSuffix(requestURI, "htm") {
+ if !f.c.visitedURLs.Contains(requestURI) {
// If not already on stack, re-render that single page.
- if err := f.c.partialReRender(p); err != nil {
- f.c.handleBuildErr(err, fmt.Sprintf("Failed to render %q", p))
+ if err := f.c.partialReRender(requestURI); err != nil {
+ f.c.handleBuildErr(err, fmt.Sprintf("Failed to render %q", requestURI))
if f.c.showErrorInBrowser {
- http.Redirect(w, r, p, http.StatusMovedPermanently)
+ http.Redirect(w, r, requestURI, http.StatusMovedPermanently)
return
}
}
}
- f.c.visitedURLs.Add(p)
+ f.c.visitedURLs.Add(requestURI)
}
}