Hi everyone,
We're running a fairly large Grav website with lots of content. Our editors regularly write and edit pages in Markdown, and often create internal links like this:
[Contact Form](/contact)
The issue we're facing:
Whenever a page gets renamed or moved (e.g. changing the folder name or slug or folder position), these internal links break — which is expected, since Grav doesn't automatically update or manage those references.
We're currently looking for the cleanest and most robust way to:
- Prevent broken internal links when pages are renamed or moved
- Make it easy for editors to insert stable internal links
- Avoid completely refactoring the existing site structure (retroactively adding UUIDs everywhere isn’t realistic)
What we already use or know about:
route_overridefor important permanent URLsredirectin the page frontmatter to forward old URLs- Manual search & replace using a code editor or shell script
What we're still missing:
- Some kind of internal linking system (shortcode or plugin) that’s also retrofit-friendly for existing content
- Or at least a tool to check all Markdown files for broken internal links
Our questions:
- How do you deal with this in larger Grav sites?
- Are there any tools, plugins, or best practices to manage or update internal links across content?
- Has anyone implemented a reliable system for internal linking that survives content restructuring?
Any suggestions or experience would be super helpful. Thanks in advance! 🙌