hotfix(seo): bundle 3 SEO 404 fixes to main (alternatives + composite slug + ton→gram scope) - #753
Merged
Merged
Conversation
added 3 commits
June 26, 2026 15:28
…dead compare pair Two SEO regressions feeding 404s into Google's crawl: 1. /products/<slug> for perp/PM venues without an alternatives YAML (lighter, manifold, vertex, grvt, ostium, variational, pacifica, aevo, edgex, paradex, extended, myriad, limitless, aster) hardcoded a /alternatives/<slug> footer link in PmVenueSection and PerpVenueSection. Now gated on loadAlternativeSlugs() membership so only venues with an actual YAML emit the link. 2. /compare hub rendered jupiter-vs-raydium even though raydium has no bench appearances, so /compare/jupiter-vs-raydium 404s downstream. Pre-filter COMPARE_PAIRS against getProvider() so dead pairs disappear from the list and the JSON-LD ItemList until both sides resolve. Plus a defensive guard in buildAlternativesReverseMap() so the emitted alt.slug is always a known live YAML, even if the alt list source ever changes shape.
Drop 15 anonymous 0x... HL builder slugs and 5 dead composite slugs from /products listing, sitemap and individual /products/<slug> routes. DEAD_COMPOSITE_SLUGS now lives in providers.ts as the single source of truth; related-providers.ts imports it. Bumps providers cache key v3->v4.
The catch-all /benchmarks/:slug/ton redirect fired on every bench, including aggregator-head-lag/gas-estimation/rpc-capabilities/etc that have no per_chain_explainer for gram. Result: 308 chain into 404, which Ahrefs + Google flag as a soft-404 anti-pattern. Now explicit per-bench: l1-finality, network-fees, wallet-labels-coverage.
4 tasks
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Cherry-pick bundle of 3 SEO-only fixes from dev → main, so prod ships the 404 cleanup without dragging the rest of dev's accumulated work.
`fix(seo): drop dead /alternatives links from perp/PM venue footers + dead compare pair` (was fix(seo): drop dead /alternatives + jupiter-vs-raydium compare #749 on dev)
`fix(seo): blacklist hex builder slugs and shared composite filter` (was fix(seo): blacklist hex builder + shared composite filter #747 on dev)
`fix(seo): scope ton→gram redirect to benches with gram explainer` (supersedes hotfix(seo): scope ton→gram redirect to benches with gram explainer #750)
Closes #750. PRs #747 + #749 remain open against dev for staging record.
Test plan after `vercel --prod`