All Articles
Implementation GuidesUpdated Apr 27, 2026

Adding an Autonomous Blog to an Existing Site: The Implementation Guide

TL;DR

Add a blog to a Webflow, Framer, or static site by routing /blog at the edge to a separate blog system while every other path passes through to your existing host. The host CMS stays untouched, the blog lives on the same domain for SEO, and you avoid a full CMS migration.

Latest

Latest in Implementation Guides

Most marketing teams who want a blog already have a website. The site lives on Webflow, Framer, a static site generator, or a hand-built Next.js project, and it works. Replacing it to add a content surface is months of work and a coordination tax across design, dev, and marketing. The right move is usually to leave the marketing site alone and add a blog at the edge so /blog resolves to a different system while everything else passes through. This guide is the design pattern. For a primer on the underlying technique, see Edge Routing Explained: What It Is and When to Use It.

Why CMS migration is the wrong default

A CMS migration is rarely about content. It is about the surrounding infrastructure: design tokens, layouts, navigation, analytics, A/B testing, redirects, forms, and the dozens of integrations a marketing site accumulates. Moving the marketing pages to whatever CMS happens to be good at blogs means rebuilding all of that, plus retraining the team that publishes pages today.

The cost is also strategic. Marketing sites are tuned for conversion and brand. Blogs are tuned for publishing throughput, structured content, and SEO. The constraints conflict. A CMS that is great at one is usually mediocre at the other, which is why most companies that try to unify them end up with a marketing site that publishes slowly and a blog that does not match the brand.

Co-existence solves both. The marketing site stays in the system that does it well. The blog runs in a system designed for content velocity. The two are joined at the URL layer, not the CMS layer. The mechanism that makes the URL-layer join cheap is edge routing.

Why subfolder beats subdomain for the blog

The case for subfolders is consolidation. When yourdomain.com and yourdomain.com/blog share a host, every backlink to either path contributes to the same authority signal that Google uses to rank pages on that host. When you split to blog.yourdomain.com, you create a second host that has to earn its own signals, even though it shares your brand.

Subdomains are not penalized. They are just treated as adjacent properties, which means a backlink to a blog post on a subdomain helps the subdomain rank, not the marketing pages. For most teams that want their blog to lift the marketing pages, the subfolder is the right choice. The historical reason teams chose subdomains, namely that the blog CMS could not share a host with the marketing CMS, is no longer a real technical constraint. Edge routing makes shared hosts trivial.

We have a longer breakdown of the data in Subfolder vs Subdomain: What the SEO Data Shows.

How edge routing actually works

Edge routing is a request-level decision made before your origin sees traffic. A user requests yourdomain.com/blog/post. DNS sends the request to your CDN or edge platform. An edge function or routing rule inspects the path, sees that it starts with /blog, and forwards the request to the blog origin. The blog origin renders the response and returns it. The CDN caches the response and serves it to the user. To the browser, the page came from yourdomain.com.

The same request to yourdomain.com/pricing follows a different rule and is passed through to the marketing origin. Neither origin knows the other exists. Each system is self-contained.

The mechanics are well-trodden. Cloudflare Workers, Vercel proxy/rewrites, Fastly VCL, AWS CloudFront Functions, and Netlify Edge Functions all support this pattern. The concept is the same across all of them: match a path, rewrite the origin, preserve the host header. We covered the implementation details in Edge Routing Explained: What It Is and When to Use It.

Path matching rules

The routing rule needs to match /blog and /blog/* exclusively. Common mistakes are matching /blog as a prefix (which would also match /blogger or /blog-old) or matching only /blog/ (which misses the bare /blog landing page). Use anchored patterns: ^/blog$ and ^/blog/.

Host header preservation

The blog origin must see the public host (yourdomain.com), not the internal origin host. This matters for canonical URL generation, sitemap output, and any absolute URLs the blog system emits. Most edge platforms preserve the host header by default, but some default to the origin's host. Check before you ship.

Cache key isolation

CDN caches key on host, path, and a configurable set of headers. If your CDN caches /blog responses on the same key as marketing responses, and you have a path collision (rare but possible during rollouts), the wrong content can ship. Most edge platforms partition cache by origin automatically. Verify, and if you need belt-and-braces, add a cache tag prefix per origin.

The pre-flight checklist

Before you add the routing rule, audit:

  1. URL collisions. Search your existing site for any path that starts with /blog. If your marketing site already has a /blog page, decide whether to redirect old content to the new blog or to use a different path like /resources or /writing.
  2. Robots.txt scope. Your robots.txt must live at yourdomain.com/robots.txt. Decide which system owns it. If the blog system needs to add disallow rules, those rules need to be merged into the canonical robots.txt at the marketing origin, or the routing layer needs to serve a merged robots.txt directly.
  3. Sitemap strategy. Decide whether you will publish a single combined sitemap or a sitemap index that chains to per-system sitemaps. Either works, but the public sitemap.xml URL must resolve.
  4. Canonical URL convention. Confirm the blog system emits canonicals using the public host, not its internal origin. Same for Open Graph URLs, RSS feed self-references, and structured data URLs.
  5. Analytics installation. The blog origin needs the same analytics scripts as the marketing origin. If you use a shared GTM container, install it on both. If you split, you fragment your funnel.
  6. Hreflang and i18n. If your marketing site uses hreflang, decide whether the blog will participate. The hreflang tags must be consistent across all pages on the host or Google will partially ignore them.

The setup pattern

The pattern is the same across providers, with provider-specific syntax.

  1. Provision the blog origin and confirm it serves a working /blog page on its own domain (e.g. blog.example.com).
  2. Add a routing rule on the CDN: when path starts with /blog, rewrite the origin to the blog origin and preserve the host header.
  3. Test the route on a staging domain or a preview deployment. Confirm yourdomain.com/blog returns the blog content and yourdomain.com/pricing still returns the marketing content.
  4. Verify the canonical URL on a blog post reads https://yourdomain.com/blog/post-slug, not the internal origin.
  5. Add /blog/sitemap.xml and /blog/rss.xml to the routing config. Either reference them from yourdomain.com/sitemap.xml or chain through a sitemap index.
  6. Submit yourdomain.com/sitemap.xml to Google Search Console for the canonical property. The blog URLs will be crawled and indexed under the canonical host.
  7. Add internal links from the marketing site's nav or footer to /blog. This is the signal Google uses to discover the new content surface.

For Webflow specifically, we walk through the exact configuration, including DNS handoff, reverse-proxy setup, and how to keep the Webflow Designer workflow intact, in Add a Blog to Webflow Without Webflow CMS.

Common pitfalls

CDN cache conflicts. If both origins are behind the same CDN with overlapping cache rules, a stale entry from one can serve to the other during a deploy. Set cache tags per origin so purges are targeted, and confirm purge propagation before relying on it.

Robots.txt fragmentation. Each origin will try to serve its own robots.txt at /robots.txt. Only one can win. Pick one source of truth and route /robots.txt explicitly to that origin. Do not let the blog origin's robots.txt accidentally serve at the public host with rules scoped to the internal origin.

Sitemap host mismatches. If the blog system generates a sitemap with internal-origin URLs, every URL in the sitemap will 404 when crawled at the public host. Configure the blog system to emit absolute URLs using the public host. This is a one-line config in most blog systems and the most common reason indexing breaks.

Hreflang propagation. If the marketing site uses hreflang and the blog does not, Google sees an inconsistent set of language hints on the host. Either extend hreflang to the blog or remove it from the marketing pages until you can. Inconsistent hreflang is worse than no hreflang.

Canonical URL drift. Some blog platforms emit canonicals based on the request host. Some emit based on a configured public URL. The second is correct for this pattern. The first will silently break if any internal traffic hits the blog origin directly.

Trailing slash inconsistency. If the marketing site uses trailing slashes and the blog does not (or vice versa), you will accumulate duplicate URLs in the index and dilute equity. Pick one convention and enforce it on both sides with 301 redirects.

Migration vs co-existence: how to choose

Co-exist when:

  • The marketing site works and the team that publishes it is happy.
  • The blog needs higher publishing velocity than the marketing system supports.
  • You want SEO authority consolidated under one host without rebuilding the marketing site.
  • You expect the marketing site and blog to evolve on different cadences.

Migrate when:

  • The marketing site and blog need to share a component library, content model, or internal tooling, and the cost of two systems exceeds the cost of one rebuild.
  • You are already replatforming the marketing site for an unrelated reason.
  • The blog will fully absorb the marketing site's content needs (rare).

For most teams the right answer is co-exist for at least the first year. Edge routing makes the cost of co-existence low enough that the question becomes "is the marketing site good enough" rather than "what CMS should we standardize on". EdgeBlog is the autonomous case of this pattern, where the blog system both publishes and routes itself, but the underlying technique is provider-agnostic and works with any blog backend that can serve clean HTML at a public host.

FAQ

Frequently asked questions

Can I add a blog to Webflow without using Webflow CMS?

+
Yes. Point your domain at a CDN or edge platform that supports per-path origin routing. Configure /blog and /blog/* to resolve to a separate blog origin, and let every other path resolve to Webflow as it does today. Webflow continues to serve your marketing pages with no changes to its CMS, collections, or design system. The blog renders from the second origin but lives at yourdomain.com/blog, so it inherits your root domain's authority and shares cookies, analytics, and brand context with the rest of the site.

Should I put my blog on a subfolder or a subdomain?

+
Subfolder, in almost every case where you control routing. A subfolder (yourdomain.com/blog) consolidates link equity onto a single host, which is the unit Google evaluates for site-wide authority. A subdomain (blog.yourdomain.com) is treated as a related but distinct host and has to earn signals separately. The historical reason teams chose subdomains, that their CMS could not share a host with the marketing site, is no longer a real constraint when you have edge routing. See [Subfolder vs Subdomain: What the SEO Data Shows](/blog/subfolder-vs-subdomain-blog-seo-data) for the data.

Will edge routing affect my main site's performance?

+
Done correctly, no. Edge workers add a few milliseconds of CPU time per request, well under typical TTFB variance. The work is path matching against a small set of rules, not full page processing. Non-blog requests are passed through to your existing origin without modification. The cases where performance suffers are misconfigurations: rules that run heavy logic on every request, or workers that buffer the full response before streaming. Keep edge logic limited to routing decisions and let origins handle rendering.

Does Google treat /blog as part of my domain when it's served from a different origin?

+
Yes, because Google evaluates URLs, not origins. If yourdomain.com/blog/post returns a 200 with crawlable HTML, Google treats it as a page on yourdomain.com regardless of which backend produced the response. Internal links from your homepage to /blog pass equity normally. The host header, the URL the user sees in the address bar, and the URL in the sitemap all read yourdomain.com. You do need to keep canonical URLs absolute and pointing at the public host, and you need to merge your sitemaps so /blog URLs are discoverable from yourdomain.com/sitemap.xml.

What about preview, staging, and draft workflows?

+
Drafts should live on the blog origin, gated by an unguessable preview token in a query string or cookie. The edge routing layer does not need to know about drafts. Editors hit a preview URL like yourdomain.com/blog/post?preview=tok_xxx and the blog origin checks the token before rendering. Staging environments work the same way: the edge routing config is duplicated for staging.yourdomain.com so previews, drafts, and live content all share routing semantics. Avoid serving drafts from a separate subdomain, which fragments the workflow.

How do I handle the sitemap when the blog and main site are on different origins?

+
Two acceptable patterns. The first is a single sitemap.xml at yourdomain.com/sitemap.xml that lists URLs from both systems, generated by whichever side owns publication metadata. The second is sitemap chaining: yourdomain.com/sitemap.xml is a sitemap index that references yourdomain.com/sitemap-marketing.xml and yourdomain.com/sitemap-blog.xml, each generated by its respective system and routed at the edge. Chaining is easier to maintain because each system owns its own sitemap. Either way, every URL in the sitemap must use the public host, not the internal origin host.

When should I migrate vs co-exist?

+
Co-exist when your marketing site is fine and the only gap is content publishing. Edge routing keeps two specialized systems each doing what they do well, and the cost is one routing config plus one shared analytics setup. Migrate when your marketing pages and blog need the same component library, the same content model, or the same internal tooling, and you are willing to absorb the rebuild cost. Most teams should co-exist for the first 12-18 months and only migrate later if the systems start fighting each other.