Skip to content

feat: support path-prefix canonical base URLs in --canonical-origin - #102

Open
philip wants to merge 2 commits into
agent-ecosystem:mainfrom
philip:support-canonical-path-prefix
Open

feat: support path-prefix canonical base URLs in --canonical-origin#102
philip wants to merge 2 commits into
agent-ecosystem:mainfrom
philip:support-canonical-path-prefix

Conversation

@philip

@philip philip commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

--canonical-origin previously accepted only an origin, so it worked when production and preview shared the same path structure. But when production docs live under a path prefix (e.g. https://example.com/docs) and the preview serves from a different base, an origin swap produces broken URLs.

This PR lets the flag accept an origin plus a path prefix. When a prefix is given, matching URLs in fetched content are rewritten to the full target base instead of just swapping origins.

Along the way this fixes two latent issues in the canonical-origin rewrite itself: a $ in the target URL was interpreted as a replacement pattern, and URLs ending at ?, #, ), or , (markdown links, prose) weren't matched. The canonical value is also normalized consistently now (trailing slashes, host case, default ports).

Verified end to end against a real deploy: a Vercel preview of neon.com/docs scored identically to production with --canonical-origin https://neon.com/docs.

🤖 Generated with Claude Code

philip and others added 2 commits August 14, 2026 16:51
A canonical like https://prod.com/docs// left a trailing slash in the
normalized value, so the rewrite regex silently matched nothing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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