Help
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.
| Address | What you configure | Good to know |
|---|---|---|
Folderhttps://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). |
Subdomainhttps://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.
https://blog.acme.com and save.Type Name Target
CNAME blog.acme.com sites.amplifysignal.comhttps://acme.com itself needs a provider that supports CNAME flattening or ALIAS records at the root.sites.amplifysignal.com exactly, not at an IP address, and not at amplifysignal.com./blog to usYour 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:
/blog and /blog/* to https://sites.amplifysignal.com/b/acme.com/, keeping the rest of the path
(/blog/hello-world/ → https://sites.amplifysignal.com/b/acme.com/hello-world/). Feeds, the sitemap and article images all live under that path, so nothing else needs proxying.sites.amplifysignal.com (a Host header of sites.amplifysignal.com). Most platforms do this on their own for an external rewrite; nginx and older Caddy need it set./, and a slashless page URL is redirected back to the slashed one, so a proxy that drops the slash loops. Next.js and Vercel both need an explicit rule for it (below).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.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
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.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
{
"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*" }
]
}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
/blog https://sites.amplifysignal.com/b/acme.com/ 200!
/blog/* https://sites.amplifysignal.com/b/acme.com/:splat 200!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
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);
},
};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
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;
}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
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
}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.
<address>/sitemap.xml; add a Sitemap: line for it to your site's robots.txt, or submit it in Search Console (a Domain property already covers a subdomain; a URL-prefix property needs the blog's own).https://amplifysignal.com/b/acme.com/… answers with a permanent redirect to the same article on your domain, and social posts we already sent stay clickable.https://amplifysignal.com/b/acme.com/. Search engines follow the canonicals either way.Questions? Reply to any email from us, or write to dylan.k.roy@gmail.com.