Cloudflare Locale Routing
Goal
Force /en/* and /tr/* URL model while keeping Docusaurus default locale (en) prefixless at origin.
Strategy
Use a Cloudflare Worker at edge:
- Locale URL priority: explicit URL > cookie > geo fallback
/en/*requests are rewritten to origin/*/tr/*requests are proxied as-is- Locale-less requests redirect to
/en/*or/tr/*
Files
- Worker script:
cloudflare/locale-router-worker.js
Deployment Steps
- Create a Worker in Cloudflare.
- Paste
cloudflare/locale-router-worker.jscontent. - Route Worker to
docs.cyprob.io/*. - Keep Docusaurus
defaultLocale: 'en'andlocales: ['en', 'tr'].
Cookie Contract
- Cookie key:
lang - Supported values:
en,tr
If lang exists, geo fallback is ignored.
Locale cookie is automatically persisted when users visit /en/* or /tr/*.
Notes
- This keeps origin simple while exposing explicit locale URLs externally.
- If you need permanent redirects later, switch
302to301after validation.