Skip to content

Prevent redirect loops and chains when renaming pages - #1442

Open
jeroenson wants to merge 1 commit into
mainfrom
fix-rewrite-rule-loops
Open

Prevent redirect loops and chains when renaming pages#1442
jeroenson wants to merge 1 commit into
mainfrom
fix-rewrite-rule-loops

Conversation

@jeroenson

Copy link
Copy Markdown

Renaming a page from A to B and later back to A currently leaves two rewrite rules that point at each other (A to B and B to A). Anything hitting the old URL then bounces between the two. We found over 20k of these loop pairs in one of our production databases. Renaming a page twice (A to B, then B to C) leaves a chain, so old links need two redirects to arrive.

This moves the bookkeeping to RewriteRule.record, which removes rules that redirect away from the new path, points existing rules directly at the final path, and skips blank old paths. Page#rewrite_rule now just delegates to it.

Added tests for the new behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant