···203203 s.failedMu.Lock()
204204 delete(s.failed, targetURL)
205205 s.failedMu.Unlock()
206206- // fall through to normal flow (no cache hit → re-extract)
206206+ // Redirect to same path without query params to avoid loop
207207+ http.Redirect(w, r, path, http.StatusSeeOther)
208208+ return
207209 }
208210209211 recipe, err := s.cache.Get(targetURL)