Context
In August and September 2026 this site moved from a Next.js app on Vercel to a prerendered Astro site on Cloudflare Workers. Every page is built once and served as a static file; the CMS is a shared Payload service read at build time. The old site’s URLs were mapped to the new ones with 301s, the sitemap was registered in Search Console, and the home page ranked for its own name within days.
The first full read of Search Console came on 2026-10-07, five weeks after the cut-over.
What Search Console showed, first read (22:13 UTC)
| Fact | Number |
|---|---|
| URLs in the sitemap | 26 |
| “Submitted and indexed” | 1 |
| “Duplicate without user-selected canonical” | 21 |
| “URL is unknown to Google” | 4 |
| Impressions, September | 28 |
| Clicks, September | 1 |
Every one of the 28 impressions was a query for the name of one workshop.
What the site was doing
Astro’s default build writes column/index.html, and the sitemap integration lists it as /column/. Cloudflare serves a static site’s files with a default it calls auto-trailing-slash: it answers whichever form the file does not match with a redirect to the other, and that redirect is a 307. A 307 means “temporarily moved”: the thing you asked for is still the real address, go here for now. Google takes that literally, keeps both addresses, and picks one. It picked /column, the form every internal link on the site used. The sitemap kept submitting /column/. “Duplicate without user-selected canonical” is the honest verdict for an address that is a copy of one Google already holds, with nothing on the page saying which is which.
Three more faults, all measured on the live site the same day:
http://flowingkhaos.com/answered 200, with no redirect tohttps://and noStrict-Transport-Securityheader. A second pair of addresses for every page.- The sitemap had no
lastmodon any of its 26 URLs, and no page carried a date anywhere: no JSON-LD, noarticle:modified_time, noLast-Modifiedheader. - 16 of the 26 pages shared one meta description, the default from the site’s base layout. The four stage pages of a fix repeated the parent’s title as their H1.