Setup guide

Add a blog at /blog on Cloudflare Workers

Yes, whatever serves the rest of your site. If acme.com's DNS is on Cloudflare with the record proxied (orange cloud), a short Worker on the routes acme.com/blog and acme.com/blog/* fetches the blog from us and leaves every other path alone. Cloudflare's free plan covers 100,000 Worker requests a day.

Needs
acme.com on Cloudflare DNS, record proxied (orange cloud)
Where
Workers & Pages → your Worker → Settings → Domains & Routes
Free plan
100,000 requests a day, reset at midnight UTC
Tested
wrangler 4.151.0 (wrangler dev) against our live edge, 2026-10-14

How it works

Set it up

  1. Set the address

    In AmplifySignal, open Settings → Blog address, enter https://acme.com/blog and save. Nothing public moves until the check passes.

  2. Create the Worker

    In Workers & Pages, create a Worker from the Hello World template, replace its code with this, and deploy:

    worker.js
    const PREFIX = "/blog";
    const ORIGIN = "https://sites.amplifysignal.com/b/acme.com";
    
    export default {
      async fetch(request) {
        const url = new URL(request.url);
        if (url.pathname === PREFIX || url.pathname.startsWith(PREFIX + "/")) {
          return fetch(new Request(ORIGIN + url.pathname.slice(PREFIX.length) + url.search, request));
        }
        return fetch(request);
      },
    };

    It builds the upstream URL from a constant rather than editing the visitor's URL, so the path, the trailing slash and the query string pass through untouched, and the scheme and port can't leak in. Redirects from the blog go back to the browser as they are, and fetch sends sites.amplifysignal.com as the Host on its own.

  3. Add the two routes

    In the Worker, open Settings → Domains & Routes → Add → Route, pick the acme.com zone and add acme.com/blog, then again for acme.com/blog/*. If visitors use www.acme.com, the routes name that host instead. Using wrangler? This config deploys the Worker and both routes:

    wrangler.jsonc
    {
      "name": "blog-proxy",
      "main": "worker.js",
      "compatibility_date": "2026-10-14",
      "routes": [
        { "pattern": "acme.com/blog", "zone_name": "acme.com" },
        { "pattern": "acme.com/blog/*", "zone_name": "acme.com" }
      ]
    }
  4. Check it

    Three requests from any terminal show whether the rule works before you press anything:

    terminal
    curl -sI https://acme.com/blog/ | head -1
    # HTTP/2 200
    
    curl -s https://acme.com/blog/_verify.json
    # {"edge":true,"host":"acme.com","service":"amplifysignal"}
    
    curl -sI https://acme.com/blog/<an-article>/ | head -1
    # HTTP/2 200

    A 301 on the article that points at the same URL, again and again, means something on the way is dropping the trailing slash. "edge":false means the rule points at amplifysignal.com instead of sites.amplifysignal.com.

    Then press Check in Settings → Blog address, or run as site blog-check acme.com. Check fetches /_verify.json through your address and passes when it answers for this site through our edge. From then on, links, canonical tags, the sitemap and the RSS feed use your address, and the old /b/ links redirect to it.

Mistakes we've seen or reproduced

Questions

Does this work if my site is on Webflow, Framer, Lovable or Shopify?

Only where that host allows Cloudflare's proxy in front of it. Webflow does through Orange-to-Orange on a paid site plan; Lovable has a custom-domain option for it; Framer documents a Worker in front only on its Advanced Hosting add-on. Each has its own guide below.

Do I need a paid Workers plan?

No. The free plan's 100,000 requests a day is plenty for most small blogs. Static assets your site serves elsewhere don't count; only requests on the two routes do.

Is there a no-code way in Cloudflare?

Not below Enterprise. Origin Rules can rewrite the Host header and resolve to another hostname, but those overrides are Enterprise-only, so on Free, Pro and Business a Worker is the way.

Will the Worker slow down the rest of my site?

It never runs outside /blog: the routes decide which requests reach it.

Why sites.amplifysignal.com and not amplifysignal.com?

sites.amplifysignal.com is our edge: a request there tells us it came through your proxy, so we serve the page as yours. Once your address is verified, amplifysignal.com redirects a blog's visitors to your address instead, so a proxy aimed there would send people in a circle. Check names the problem if a rule points at the wrong one.

Do these rules work for a blog that isn't on AmplifySignal?

The mechanics carry over: swap the destination for any server that hosts your blog under a path. Copy two things along with them. Keep the trailing slash if that server's URLs end in one, and make sure its links and canonical tags name your address, or search engines index the other host instead. Ours switch the moment Check passes.

Can I use blog.example.com instead?

Yes, on any platform: one CNAME from blog to sites.amplifysignal.com, and we issue the certificate. A folder shares your main domain's authority, which is why these guides lead with it; the subdomain steps are on the overview.

What this is based on

Checked against the platform's documentation on 2026-10-14; where the facts above say tested, we ran the snippet ourselves against the servers that host our own blog and followed every URL to a 200.

Other platforms

No blog to put there yet?

AmplifySignal hosts it, drafts the articles from your keywords and Search Console data, publishes them on a schedule and sends the social posts. Every account starts with a free week, or begin with a free 90-day launch plan.

Start free