-
Notifications
You must be signed in to change notification settings - Fork 0
fix(seo): resolve the 5 GSC "Not found (404)" URLs #565
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,3 +4,11 @@ | |
| # /api was a dead path (404). The Intent API reference lives at /intent-api. | ||
| /api /intent-api 301 | ||
| /api/ /intent-api 301 | ||
|
|
||
| # /institutional and /brand are NOT docs pages: they are swap-app HashRouter | ||
| # routes (swap.ophis.fi/#/institutional, /#/brand). Google indexed stale | ||
| # docs.ophis.fi/{institutional,brand} URLs from old links and flagged them 404 | ||
| # (GSC, 2026-06). 301 them to their real homes on the swap app. (If CF drops the | ||
| # fragment, the target still resolves to the live swap home, so never a 404.) | ||
| /institutional https://swap.ophis.fi/#/institutional 301 | ||
| /brand https://swap.ophis.fi/#/brand 301 | ||
|
Comment on lines
+13
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If crawlers or old links request Useful? React with 👍 / 👎. |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -155,6 +155,19 @@ export async function buildApiServer(): Promise<FastifyInstance> { | |
| }); | ||
| app.options('*', async (_req, reply) => reply.code(204).send()); | ||
|
|
||
| // rebates.ophis.fi is the rebate-indexer API host (JSON endpoints + the | ||
| // per-wallet /tier HTML page). None of it is meant for search indexing, and | ||
| // Google was crawling the bare host root and flagging it 404 (GSC, 2026-06). | ||
| // Tell crawlers to stay off the whole host. Permissive rate limit: robots.txt | ||
| // is fetched freely by crawlers and is harmless. | ||
| app.get('/robots.txt', { | ||
| config: { | ||
| rateLimit: { max: 200, timeWindow: '1 minute' }, | ||
| }, | ||
| }, async (_req, reply) => | ||
| reply.code(200).type('text/plain; charset=utf-8').send('User-agent: *\nDisallow: /\n'), | ||
|
Comment on lines
+163
to
+168
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When Google rechecks the flagged URL Useful? React with 👍 / 👎. |
||
| ); | ||
|
|
||
| app.get('/health', { | ||
| config: { | ||
| rateLimit: { max: 200, timeWindow: '1 minute' }, // permissive — uptime monitors hit this continuously | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current swap app no longer owns
/institutional:RoutesApp.tsxredirects that route tohttps://business.ophis.fiin a client-sideuseEffect. Sending the docs 301 tohttps://swap.ophis.fi/#/institutionaltherefore makes crawlers land on the SPA shell and only reach the real page if they execute JavaScript, while non-JS clients see the wrong destination; redirect this stale docs URL directly to the business host instead.Useful? React with 👍 / 👎.