Skip to content

Keep the URL of live pages stable when the title changes#1443

Open
jeroenson wants to merge 2 commits into
mainfrom
freeze-url-titles
Open

Keep the URL of live pages stable when the title changes#1443
jeroenson wants to merge 2 commits into
mainfrom
freeze-url-titles

Conversation

@jeroenson

@jeroenson jeroenson commented Jul 6, 2026

Copy link
Copy Markdown

By default the slug of a page follows its title as long as url_title is empty. That is great while building a site, but on a live page it means an innocent title edit quietly moves the page to a new URL and leaves a 301 behind. Our content team hits this every time they freshen up titles (changing a year number for example), and over time that builds redirect chains and costs link equity.

With this change the slug of a live page is locked on its next save: the current slug is written to url_title, so title edits no longer move the page. The URL can still be changed deliberately by editing url_title, which creates the usual 301. Draft pages keep following the title.

This does change behavior for existing sites, so it deserves a line in the release notes.

@Bramjetten

Copy link
Copy Markdown
Contributor

I don't like it as an option

@jeroenson jeroenson changed the title Add freeze_url_titles config option Keep the URL of live pages stable when the title changes Jul 6, 2026
@jeroenson

Copy link
Copy Markdown
Author

Fair enough. I removed the option and made it the default. Drafts keep following the title, so the only change is that a live page no longer moves to a new URL when someone edits its title. Changing the URL through url_title works like before, including the 301. The whole test suite passes with the new default. If you know a case where you actually want a title edit to silently move a live page, I'd like to hear it.

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.

2 participants