Country code redirect
Redirect a response based on the country code in the header of a visitor.
Run Workerexport default { async fetch(request) { /** * A map of the URLs to redirect to * @param {Object} countryMap */ const countryMap = { US: "https://example.com/us", EU: "https://example.com/eu", };
// Use the cf object to obtain the country of the request // more on the cf object: https://developers.cloudflare.com/workers/runtime-apis/request#incomingrequestcfproperties const country = request.cf.country;
if (country != null && country in countryMap) { const url = countryMap[country]; // Remove this logging statement from your final output. console.log(`Based on ${country}-based request, your user would go to ${url}.` ) return Response.redirect(url); } else { return fetch("https://example.com", request); } },
};
export default { async fetch(request): Promise<Response> { /** * A map of the URLs to redirect to * @param {Object} countryMap */ const countryMap = { US: "https://example.com/us", EU: "https://example.com/eu", };
// Use the cf object to obtain the country of the request // more on the cf object: https://developers.cloudflare.com/workers/runtime-apis/request#incomingrequestcfproperties const country = request.cf.country;
if (country != null && country in countryMap) { const url = countryMap[country]; return Response.redirect(url); } else { return fetch(request); } },
} satisfies ExportedHandler;
from js import Response, fetch
async def on_fetch(request): countries = { "US": "https://example.com/us", "EU": "https://example.com/eu", }
# Use the cf object to obtain the country of the request # more on the cf object: https://developers.cloudflare.com/workers/runtime-apis/request#incomingrequestcfproperties country = request.cf.country
if country and country in countries: url = countries[country] return Response.redirect(url)
return fetch("https://example.com", request)