Skip to content

How to Redirect Domains Using Cloudflare Workers


Redirecting requests from one domain to another is something I would normally accomplish by way of nginx, however, this is something I can't make use of with Cloudflare Pages (Jamstack). Most of my domains with a static site would use a Page Rule to accomplish this. This involves creating a Forwarding Rule to create a 301 redirect from one domain to another.

The problem comes in when you exceed 3 redirects. I only need one more so buying additional redirects in blocks of five at $5 per block isn't worth it.

To get around this, I made use of Cloudflare Workers.

Cloudflare Workers is a serverless environment used to augment an existing environment by running scripts as needed. Cloudflare gives a generous 100,000 runs per day (at the time of this writing) which is more than enough for my needs.

My example will be redirecting traffic from a non-www domain ( to a www domain (

Cloudflare Workers

  • Open the site in Cloudflare dashboard.
  • Go to the Workers tab.
  • Click Manage Workers -> Create a Worker
  • Delete the existing demo script and add the following code:
const base = ""
const statusCode = 301

async function handleRequest(request) {  
    const url = new URL(request.url)  
    const { pathname, search } = url

  const destinationURL = base + pathname + search

  return Response.redirect(destinationURL, statusCode)

addEventListener("fetch", async event => {
  • To test it's working properly, click the Send button for the Workers domain. It should generate the following:
301 Moved Permanently

  • Once completed, all previous steps should result in the following:


  • Once confirmed, navigate back to the Workers tab within the site.
  • Click Add Route


  • Set the route to*
  • Select the worker created in the previous steps.
  • Click Save