Redirect old Seamtro product paths to app.seamtro.ai (already live in prod) #3
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "seamtro-product-redirects"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds
_redirects, the exact file deployed to Cloudflare Pages production for ni-landing on 17 Oct (deployment ac0de057, built from main026d17dplus this file), so the repo matches what prod serves.On 17 Oct the Seamtro product moved from the seamtro.ai apex to https://app.seamtro.ai, and the apex and www now serve this landing page. These rules send the old apex paths to the same path on app.seamtro.ai, query strings kept:
Known caveat: Stripe does not follow redirects for webhooks, so a webhook pointed at seamtro.ai/api/webhooks/stripe needs updating to app.seamtro.ai in Stripe.
Verified in prod: every listed path returns 301/308 to the matching app.seamtro.ai URL, and app.seamtro.ai serves those pages with 200. Rollback notes are in ops-notes (seamtro-cutover-20261017).
Approved at
156ad4b. The file matches prod.Live check (read-only HEADs, apex and www): all 18 rules return the stated 301/308 to the same path on app.seamtro.ai, with query strings kept. Every target on app.seamtro.ai returns 200, except
/api/webhooks/stripe, which returns 405 to HEAD (expected for a POST-only route).Syntax and rule order: valid Cloudflare Pages
_redirectsformat (source, absolute target, status)./,/robots.txt,/sitemap.xmland the 404 page are all live;/llms.txtand/.well-known/*from #2 don't overlap any rule.Open redirect: none. Every target is a fixed
https://app.seamtro.ai/....:splatonly fills in the path./dashboard/%2f%2fevil.comgoes toapp.seamtro.ai/dashboard/%2f%2fevil.com, so the host stays fixed.//evil.com/returns 404, and/api/..%2f..returns 400.308 and POST: 308 (RFC 7538) keeps the method and body for clients that follow redirects. Stripe does not follow redirects for webhooks, so change the Stripe webhook endpoint to
https://app.seamtro.ai/api/webhooks/stripe. Other server-to-server POSTers are worth auditing too.Follow-ups outside this PR (please confirm):
/auth/callbackhas no rule and returns 404 on the apex. app.seamtro.ai serves it (307 when called without a code). Make sure the Auth0 Allowed Callback, Logout and Web Origin URLs listhttps://app.seamtro.ai/auth/callback, and remove the apex entries once you're done.https://seamtro.ai/?error=missing_code. That's the landing page now, which suggests the app's base or redirect URL (e.g. AUTH0_BASE_URL / APP_URL) is still the apex. Set it to app.seamtro.ai, or users will land on the landing page after login, logout or errors./logo.png, so redirecting/favicon.icois harmless. Browsers that probe/favicon.icoanyway will show the Seamtro icon.Privacy grep is clean.
@ -0,0 +11,4 @@/dashboard/* https://app.seamtro.ai/dashboard/:splat 301/form https://app.seamtro.ai/form 301/form/* https://app.seamtro.ai/form/:splat 301/api/* https://app.seamtro.ai/api/:splat 308308 keeps the method and body, but Stripe won't follow it. Point the Stripe webhook endpoint straight at https://app.seamtro.ai/api/webhooks/stripe.