Bulk redirects

Redirect requests to certain URLs based on a mapped object to the request's URL.

Last updated Apr 23, 2026

export default {
    async fetch(request) {
        const externalHostname = "examples.cloudflareworkers.com";

        const redirectMap = new Map([
            ["/bulk1", "https://" + externalHostname + "/redirect2"],
            ["/bulk2", "https://" + externalHostname + "/redirect3"],
            ["/bulk3", "https://" + externalHostname + "/redirect4"],
            ["/bulk4", "https://google.com"],
        ]);

        const requestURL = new URL(request.url);
        const path = requestURL.pathname;
        const location = redirectMap.get(path);

        if (location) {
            return Response.redirect(location, 301);
        }
        // If request not in map, return the original request
        return fetch(request);
    },
};
export default {
    async fetch(request): Promise<Response> {
        const externalHostname = "examples.cloudflareworkers.com";

        const redirectMap = new Map([
            ["/bulk1", "https://" + externalHostname + "/redirect2"],
            ["/bulk2", "https://" + externalHostname + "/redirect3"],
            ["/bulk3", "https://" + externalHostname + "/redirect4"],
            ["/bulk4", "https://google.com"],
        ]);

        const requestURL = new URL(request.url);
        const path = requestURL.pathname;
        const location = redirectMap.get(path);

        if (location) {
            return Response.redirect(location, 301);
        }
        // If request not in map, return the original request
        return fetch(request);
    },
} satisfies ExportedHandler;
from workers import WorkerEntrypoint, Response, fetch
from urllib.parse import urlparse

class Default(WorkerEntrypoint):
    async def fetch(self, request):
        external_hostname = "examples.cloudflareworkers.com"

        redirect_map = {
          "/bulk1": "https://" + external_hostname + "/redirect2",
          "/bulk2": "https://" + external_hostname + "/redirect3",
          "/bulk3": "https://" + external_hostname + "/redirect4",
          "/bulk4": "https://google.com",
          }

        url = urlparse(request.url)
        location = redirect_map.get(url.path, None)

        if location:
            return Response.redirect(location, 301)

        # If request not in map, return the original request
        return fetch(request)
import { Hono } from "hono";

const app = new Hono();

// Configure your redirects
const externalHostname = "examples.cloudflareworkers.com";

const redirectMap = new Map([
    ["/bulk1", `https://${externalHostname}/redirect2`],
    ["/bulk2", `https://${externalHostname}/redirect3`],
    ["/bulk3", `https://${externalHostname}/redirect4`],
    ["/bulk4", "https://google.com"],
]);

// Middleware to handle redirects
app.use("*", async (c, next) => {
    const path = c.req.path;
    const location = redirectMap.get(path);

    if (location) {
        // If path is in our redirect map, perform the redirect
        return c.redirect(location, 301);
    }

    // Otherwise, continue to the next handler
    await next();
});

// Default handler for requests that don't match any redirects
app.all("*", async (c) => {
    // Pass through to origin
    return fetch(c.req.raw);
});

export default app;

Was this helpful?

YesNo

On this page

Bulk redirects - 图1Docs

{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/workers/examples/bulk-redirects/#page","headline":"Bulk redirects","description":"Redirect requests to certain URLs based on a mapped object to the request's URL.","url":"https://developers.cloudflare.com/workers/examples/bulk-redirects/","inLanguage":"en","image":"https://developers.cloudflare.com/workers/examples/bulk-redirects/og.png?v=7c90f475ac5711f2","dateModified":"2026-04-23","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"},"keywords":["Middleware","Redirects","JavaScript","TypeScript","Python"]}


description: Use the Cache API to store responses in Cloudflare's cache. title: Using the Cache API image: https://developers.cloudflare.com/workers/examples/cache-api/og.png?v=1377464805d9f59c


Skip to content

Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/workers/llms.txt
Use this file to discover all available pages before exploring further.