From aab07182588ac34fd07c7a5cf50d35381bde7b60 Mon Sep 17 00:00:00 2001 From: Matthew Berman <748450+mberman84@users.noreply.github.com> Date: Tue, 7 Jul 2026 14:55:31 -0700 Subject: [PATCH] Document signals ai redirect --- README.md | 5 +++++ infra/signals-forwardfuture-ai-redirect/README.md | 15 +++++++++++++++ .../api/redirect.js | 9 +++++++++ .../package.json | 4 ++++ .../signals-forwardfuture-ai-redirect/vercel.json | 8 ++++++++ 5 files changed, 41 insertions(+) create mode 100644 infra/signals-forwardfuture-ai-redirect/README.md create mode 100644 infra/signals-forwardfuture-ai-redirect/api/redirect.js create mode 100644 infra/signals-forwardfuture-ai-redirect/package.json create mode 100644 infra/signals-forwardfuture-ai-redirect/vercel.json diff --git a/README.md b/README.md index e78271c..603e49f 100644 --- a/README.md +++ b/README.md @@ -386,4 +386,9 @@ Read [AGENTS.md](AGENTS.md) before editing loops or publishing the site. It contains the source-of-truth rules for database publishing, generated responses, form security, and clean-main deployments. +The legacy `https://signals.forwardfuture.ai/*` host is maintained by the +redirect-only Vercel project in +[`infra/signals-forwardfuture-ai-redirect/`](infra/signals-forwardfuture-ai-redirect/). +It permanently redirects paths to `https://signals.forwardfuture.com/*`. + diff --git a/infra/signals-forwardfuture-ai-redirect/README.md b/infra/signals-forwardfuture-ai-redirect/README.md new file mode 100644 index 0000000..f2d59d9 --- /dev/null +++ b/infra/signals-forwardfuture-ai-redirect/README.md @@ -0,0 +1,15 @@ +# signals.forwardfuture.ai redirect + +Redirect-only Vercel project for `signals.forwardfuture.ai`. + +It permanently redirects every path to the same path on +`https://signals.forwardfuture.com`. + +## Deploy + +```bash +npx vercel deploy --prod --yes --scope forward-future +``` + +The Vercel project is `forward-future/signals-forwardfuture-ai-redirect`. +The DNS record is `signals.forwardfuture.ai A 76.76.21.21` in Vercel DNS. diff --git a/infra/signals-forwardfuture-ai-redirect/api/redirect.js b/infra/signals-forwardfuture-ai-redirect/api/redirect.js new file mode 100644 index 0000000..2760b2c --- /dev/null +++ b/infra/signals-forwardfuture-ai-redirect/api/redirect.js @@ -0,0 +1,9 @@ +export default function handler(request, response) { + const incomingUrl = new URL(request.url, `https://${request.headers.host}`); + const targetUrl = new URL(incomingUrl.pathname, "https://signals.forwardfuture.com"); + targetUrl.search = incomingUrl.search; + + response.statusCode = 308; + response.setHeader("Location", targetUrl.toString()); + response.end(); +} diff --git a/infra/signals-forwardfuture-ai-redirect/package.json b/infra/signals-forwardfuture-ai-redirect/package.json new file mode 100644 index 0000000..59dd427 --- /dev/null +++ b/infra/signals-forwardfuture-ai-redirect/package.json @@ -0,0 +1,4 @@ +{ + "name": "signals-forwardfuture-ai-redirect", + "private": true +} diff --git a/infra/signals-forwardfuture-ai-redirect/vercel.json b/infra/signals-forwardfuture-ai-redirect/vercel.json new file mode 100644 index 0000000..299ec8c --- /dev/null +++ b/infra/signals-forwardfuture-ai-redirect/vercel.json @@ -0,0 +1,8 @@ +{ + "routes": [ + { + "src": "/(.*)", + "dest": "/api/redirect" + } + ] +}