Setup guide
Yes, for projects that aren't Next.js: four rewrites in vercel.json proxy /blog to your blog while the address bar stays on acme.com. Write the trailing-slash rule out, because Vercel's /blog/:path* doesn't match /blog/hello-world/ and every article would 404 without it. On a Next.js project, use the Next.js guide.
vercel.json at the project rootvercel.json route compiler, 2026-10-14. Not yet run on a live Vercel deployment; the check in step 4 settles itacme.com/blog/hello-world/sites.amplifysignal.com/b/acme.com/hello-world/acme.com/blog/, with canonical tags and links to matchIn AmplifySignal, open Settings → Blog address, enter https://acme.com/blog and save. Nothing public moves until the check passes.
{
"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*" }
]
}Each rule has a job. Vercel compiles /blog/:path* to a pattern that refuses a trailing slash, so /blog/ and /blog/:path*/ get rules of their own and keep the slash on the way out. The last rule serves the slashless files: rss.xml, sitemap.xml, images. We checked every case against the compiled patterns: /blog, /blog/, an article, a nested path, the feed, an image, and /blogging, which correctly matches nothing.
Push or run vercel --prod. Leave trailingSlash out of vercel.json (or set it to true); false would strip the slash and loop.
Three requests from any terminal show whether the rule works before you press anything:
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 200A 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.
"trailingSlash": false. Vercel 308s /blog/hello-world/ to the slashless URL, the blog 301s it back, and the browser loops.blog folder in your build output. Vercel serves real files before it applies rewrites, so delete it or the proxy never runs.amplifysignal.com/b/…. Use sites.amplifysignal.com; our main domain redirects a verified blog's visitors back to your address.CDN-Cache-Control for /blog, keep it to minutes so scheduled articles appear on time.next.config.js. Next's own trailing-slash redirect runs regardless of vercel.json, so you need skipTrailingSlashRedirect anyway, and the rules then work off Vercel too. The Next.js guide has the exact config.
Vercel's docs don't list external rewrites as a paid feature. Hobby's terms limit it to non-commercial, personal use, which rules it out for most business sites whatever the feature list says.
Because Vercel matches /blog/:path* strictly: no trailing slash. Two rules would serve the feed and miss every article. The two extra rules are the slashed cases.
Only if the origin says it may. Our pages send no caching headers, so each visit is fetched fresh. To opt out explicitly, Vercel documents an x-vercel-enable-rewrite-caching: 0 header in vercel.json.
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.
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.
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.
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.
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.