Help

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 (which can).
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:
    DNS
    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. Each platform has a step-by-step guide with the reasoning, the mistakes and how to test it; the rules themselves:

Next.js

next.config.js. skipTrailingSlashRedirect is not optional: without it Next strips the slash from /blog/hello-world/, we add it back, and the browser loops. Full Next.js guide

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

Vercel

vercel.json at the project root, for anything that isn't Next.js. Vercel's /blog/:path* doesn't match a path ending in /, so articles need the slashed rule. Full Vercel guide

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

Netlify

A _redirects file in the publish directory. Status 200 makes it a proxy, not a redirect; the ! lets it win over a /blog folder your site already has. Full Netlify guide

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

Cloudflare Workers

A Worker on the routes acme.com/blog and acme.com/blog/* (Worker → Settings → Domains & Routes). The DNS record for acme.com must be proxied (orange cloud) for a route to run. Full Cloudflare Workers guide

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);
  },
};

nginx

Inside the server block for acme.com. Keep both trailing slashes on proxy_pass, and send Host sites.amplifysignal.com, not $host. Full nginx guide

nginx.conf
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

handle_path /blog/* doesn't match a bare /blog, hence the redir. Caddy 2.11+ sends the upstream's Host by itself; header_up keeps older versions right. Full Caddy guide

Caddyfile
acme.com {
    redir /blog /blog/ 308
    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.

On Framer, Webflow, Lovable? Those can't proxy a path the same way; their guides cover the subdomain and the Cloudflare routes that do work.

3. After the check passes

Questions? Reply to any email from us, or write to dylan.k.roy@gmail.com.