Skip to main content

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

  1. Create a Worker in Cloudflare.
  2. Paste cloudflare/locale-router-worker.js content.
  3. Route Worker to docs.cyprob.io/*.
  4. Keep Docusaurus defaultLocale: 'en' and locales: ['en', 'tr'].
  • 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 302 to 301 after validation.