feat: redirects screen

- golem15.seo.redirects list and form (UI-SPEC C8): chain rows marked,
  status, match, origin and chain filters, the navigation item lands here
- a field-less extension on the controller refuses a loop with
  redirects.loop on target, answers the chain notice and records history
- the status dropdown posts text, read through RedirectStatus
This commit is contained in:
2026-10-27 11:30:56 +01:00
parent 34a65b846e
commit 163b0aaf98
15 changed files with 677 additions and 24 deletions

View File

@@ -582,7 +582,7 @@ func (r *Resolver) redirectAnswer(self string, ch Chain) Result {
logRedirectCycle(self, ch)
res.Action, res.Status = ActionNotFound, 404
case ch.Gone:
res.Action, res.Status = ActionGone, models.Status410
res.Action, res.Status = ActionGone, int(models.Status410)
default:
res.Action, res.Status, res.Location = ActionRedirect, ch.Status, AbsoluteURL(r.Service.SiteURL(), ch.Final)
}