URL Migration Map
This is the operational URL map for moving seller-wide GFMR pages from markdown-renderer.wakalab.dev (the Live Lab) to wakalab.dev (the canonical Wakalab site). It implements the ownership rules in Content Architecture.
Use a 301 when the old page and the destination serve the same intent. A migrated URL must not remain indexable as a second 200 page. The Lab keeps only distinct rendering demonstrations and GFMR-specific technical material.
Redirect map
The WordPress snippet at tools/wp-abilities/snippet/gfmr-demo-abilities.php is the deployable source for these redirects. For each row, the Japanese request is redirected to the Japanese destination; ?gfmr_lang=en (or the /en/ legacy prefix) selects the English destination.
| Old WordPress URL | Canonical Wakalab URL | Treatment | Sitemap |
|---|---|---|---|
/legal/ | /legal/ | 301 | Exclude from WordPress sitemap |
/pricing/ | /products/markdown-renderer-for-github/pro | 301 | Exclude |
/license/ | /products/markdown-renderer-for-github/pro | 301 | Exclude |
/documentation/ | /products/markdown-renderer-for-github/ | 301 | Exclude |
/roadmap/ | /products/markdown-renderer-for-github/roadmap | 301 | Exclude |
/markdown-renderer-for-github/roadmap/ | /products/markdown-renderer-for-github/roadmap | 301 | Exclude |
/changelog/ | /products/markdown-renderer-for-github/changelog | 301 | Exclude |
/markdown-renderer/ | /products/markdown-renderer-for-github/ | 301 | Exclude |
/examples/ | itself on the Lab | self-canonical | Keep when it remains a working demonstration |
/tech/ | itself on the Lab | self-canonical | Keep when it remains GFMR-specific |
Legacy nested forms for pricing, license, legal, documentation, and changelog follow the same 301 policy. They are retained in the PHP redirect map so historical links do not create a redirect chain.
Deployment and verification
Copy the repository snippet into WordPress Code Snippets and enable it. Confirm its version with
node tools/wp-abilities/client/cli.mjs ping.Run
APPLY=1 node scripts/migrate-wordpress-to-gfmr-lab.mjs. It sets the Lab landing page and drafts the managed retired pages only after the routing snippet reports version1.11.0or later.Confirm each old URL is exactly one
301, then the destination is200:shcurl -sSI 'https://markdown-renderer.wakalab.dev/pricing/?gfmr_lang=en' curl -sSI https://markdown-renderer.wakalab.dev/pricing/Audit each destination with the language cookie that the redirect sets. It must have one canonical tag,
en,ja, andx-defaulthreflang links, and no conflicting canonical URL:shnode tools/wp-abilities/client/cli.mjs seo-audit \ --url https://wakalab.dev/ja/products/markdown-renderer-for-github/pro \ --cookie 'pref-lang=ja' RUN_LIVE_WP_SEO_AUDIT=1 node --test tools/wp-abilities/test/seo-audit-live.test.mjsConfirm the retired paths are absent from both
https://markdown-renderer.wakalab.dev/wp-sitemap.xmland the Rank Math page sitemap. Do not remove a URL from a sitemap until its 301 is live.
Search Console checklist
- [ ] Submit the updated
https://wakalab.dev/sitemap.xmland the WordPress sitemap after the redirects are live. - [ ] Inspect one old URL and its English and Japanese destinations; record that Google sees the 301 and selected canonical.
- [ ] At 7 days, review Page indexing for redirect and duplicate-canonical warnings.
- [ ] At 28 days, review indexed URL counts and redirect errors; fix any multi-hop redirect.
- [ ] At 90 days, review search performance and keep only URLs with distinct Lab content indexable.
Never use canonical or noindex in place of a 301 for equivalent content. noindex,follow is reserved for a necessary Lab navigation summary with genuinely no search value.