AmplifySignaldashboard →

Your blog on your own domain

Your hosted blog starts at https://amplifysignal.com/b/acme.com/. Move it to https://acme.com/blog (a folder on your domain) or https://blog.acme.com (a subdomain): enter the address in Settings → Blog address, do the one step below for your choice, then press Check. Links, canonical tags, the sitemap and the RSS feed switch to the new address the moment the check passes, and the old /b/ links redirect to it.

1. Choose where it lives

AddressWhat you configureGood to know
Folder
https://acme.com/blog
One proxy rule on the host that already serves acme.com: everything under /blog is fetched from us. Best for search. Every article counts toward your root domain's authority instead of a separate host. Needs a host that can proxy (Cloudflare, Vercel, Netlify, Next.js, nginx, Caddy… snippets below).
Subdomain
https://blog.acme.com
One CNAME record at your DNS provider. We issue and renew the certificate. Zero code, works with any host. Search engines treat it as its own site, so authority builds separately from acme.com.

Anything else that ends up at the address is fine too — /articles, /guides, news.acme.com. The path can only contain letters, digits, -, _ and ., and the blog must have the whole path to itself: if acme.com/blog already serves something, pick another path or move that content first.

2a. Subdomain — one CNAME

  1. In Settings → Blog address, enter https://blog.acme.com and save.
  2. At your DNS provider, add the record the card shows you:
    Type   Name              Target
    CNAME  blog.acme.com     sites.amplifysignal.com
    If your DNS is on Cloudflare, leave the record DNS only (grey cloud). An apex address like https://acme.com itself needs a provider that supports CNAME flattening or ALIAS records at the root.
  3. Press Check. DNS changes usually take a few minutes to reach us, and the certificate is issued automatically once the record resolves — typically within minutes, occasionally up to an hour. Check again if the first try reports it can't reach the address yet.
Nothing else to do: TLS, renewals and routing are on our side. The record must point at sites.amplifysignal.com exactly — not at an IP address, and not at amplifysignal.com.

2b. Folder — proxy /blog to us

Your host keeps serving acme.com; it fetches anything under /blog from https://sites.amplifysignal.com/b/acme.com/ and returns it as if it were its own. The contract is small:

Enter https://acme.com/blog in Settings → Blog address, add the rule for your platform, then press Check.

Cloudflare (Worker)

Workers → Create → paste, deploy, then add a route acme.com/blog* on the acme.com zone (Worker settings → Domains & Routes). The DNS record for acme.com must be proxied (orange cloud) for the route to run.

export default {
  async fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === "/blog" || url.pathname.startsWith("/blog/")) {
      const target = new URL(request.url);
      target.hostname = "sites.amplifysignal.com";
      target.pathname = "/b/acme.com" + url.pathname.slice("/blog".length);
      return fetch(new Request(target.toString(), request));
    }
    return fetch(request);
  },
};

Vercel

vercel.json at the project root:

{
  "rewrites": [
    { "source": "/blog", "destination": "https://sites.amplifysignal.com/b/acme.com/" },
    { "source": "/blog/:path*", "destination": "https://sites.amplifysignal.com/b/acme.com/:path*" }
  ]
}

Next.js

next.config.js. skipTrailingSlashRedirect keeps Next from redirecting /blog/hello-world/ to /blog/hello-world:

module.exports = {
  skipTrailingSlashRedirect: true,
  async rewrites() {
    return [
      { source: "/blog", destination: "https://sites.amplifysignal.com/b/acme.com/" },
      { source: "/blog/:path*", destination: "https://sites.amplifysignal.com/b/acme.com/:path*" },
    ];
  },
};

Netlify

A _redirects file in the publish directory (or the same two rules in netlify.toml). Status 200 makes it a proxy, not a redirect:

/blog    https://sites.amplifysignal.com/b/acme.com/        200
/blog/*  https://sites.amplifysignal.com/b/acme.com/:splat  200

nginx

location = /blog { return 301 /blog/; }
location /blog/ {
    proxy_pass https://sites.amplifysignal.com/b/acme.com/;
    proxy_set_header Host sites.amplifysignal.com;
    proxy_ssl_server_name on;
    proxy_redirect off;
}

Caddy

acme.com {
    handle_path /blog/* {
        rewrite * /b/acme.com{uri}
        reverse_proxy https://sites.amplifysignal.com {
            header_up Host sites.amplifysignal.com
        }
    }
    # …the rest of your site
}
Proxy to sites.amplifysignal.com, not to amplifysignal.com. The first is our edge, which knows the request is yours; the second would redirect your visitors back to the address you're setting up. Check tells you if a rule points at the wrong one.

3. After the check passes