From c1b5a5f7688bc702a6657351916ae3eb013fdeed Mon Sep 17 00:00:00 2001 From: myelinated-wackerow <263208946+myelinated-wackerow@users.noreply.github.com> Date: Fri, 6 Mar 2026 23:31:46 +0000 Subject: [PATCH 1/3] feat(SEO): update redirects Fixes common external websites with links pointing to internal pages that 404, helping capture link equity Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com> --- middleware.ts | 1 + next.config.js | 6 ++++++ redirects.config.js | 51 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/middleware.ts b/middleware.ts index 0c3778e26a1..a2ca9b31c07 100644 --- a/middleware.ts +++ b/middleware.ts @@ -46,6 +46,7 @@ const DEPRECATED_LOCALES = new Set([ "no", "pt", "ro", + "se", "sk", "sl", "sn", diff --git a/next.config.js b/next.config.js index 5e27317a94b..ffec67a16b7 100644 --- a/next.config.js +++ b/next.config.js @@ -153,6 +153,12 @@ module.exports = (phase, { defaultConfig }) => { } return [ + // Whitepaper PDF redirect (no locale prefix) + { + source: "/669c9e2e2027310b6b3cdce6e1c52962/Ethereum_Whitepaper_-_Buterin_2014.pdf", + destination: "/content/whitepaper/whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf", + permanent: true, + }, // All primary redirects ...redirects.flatMap(([source, destination, permanent]) => createRedirect(source, destination, permanent) diff --git a/redirects.config.js b/redirects.config.js index feb81c1248d..7e457f92f44 100644 --- a/redirects.config.js +++ b/redirects.config.js @@ -104,9 +104,54 @@ module.exports = [ ["/tds", "/trillion-dollar-security"], ["/10-years", "/10years"], ["/history", "/ethereum-forks"], - ["/developers/docs/scaling/rollups", "/developers/docs/scaling/"], + ["/developers/docs/scaling/rollups", "/developers/docs/scaling/#rollups", false], ["/eth2/get-involved/staking-community-grants", "/staking/"], - ["/developers/docs/zk", "/zero-knowledge-proofs/"], + ["/developers/docs/zk", "/zero-knowledge-proofs/", false], ["/developers/docs/security", "/developers/docs/smart-contracts/security/"], - ["/wallet", "/wallets/"], + ["/wallet", "/wallets/", false], + ["/eth2/get-involved/medalla-data-challenge", "/contributing/"], + ["/team", "/about/"], + [ + "/contributing/translation-program/blog-translations", + "/contributing/translation-program/", + ], + ["/donate", "/"], + [ + "/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash", + "/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/", + ], + ["/%20wallets", "/wallets/", false], + ["/developers/docs/zk-snarks", "/zero-knowledge-proofs/", false], + ["/developers/docs/standards/erc-4337", "/roadmap/account-abstraction/", false], + ["/developers/docs/accounts/aa", "/roadmap/account-abstraction/", false], + ["/developers/docs/scaling/layer-2", "/developers/docs/scaling/#layer-2-scaling", false], + ["/developers/docs/account-abstraction", "/roadmap/account-abstraction/", false], + ["/developers/docs/accounts/abstraction", "/roadmap/account-abstraction/", false], + ["/developers/docs/rollups", "/developers/docs/scaling/#rollups", false], + ["/roadmap/future-proofing/:path+", "/roadmap/future-proofing/", false], + ["/eth2/what-is-eth2", "/roadmap/", false], + ["/developers/docs/accounts/account-abstraction", "/roadmap/account-abstraction/", false], + [ + "/developers/docs/consensus-mechanisms/proof-of-stake", + "/developers/docs/consensus-mechanisms/pos/", + false, + ], + ["/zero-knowledge", "/zero-knowledge-proofs/", false], + ["/developers/docs/smart-contracts/account-abstraction", "/roadmap/account-abstraction/", false], + ["/developers/docs/ides/%23web-based-ides", "/developers/docs/", false], + ["/developers/docs/daos", "/dao/", false], + [ + "/developers/docs/consensus-mechanisms/pos/slashing", + "/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/", + false, + ], + ["/wallets/security", "/security/", false], + ["/developers/docs/sharding", "/developers/docs/data-availability/", false], + ["/layer-2-scaling", "/layer-2/", false], + ["/layer-2-scaling/rollups", "/developers/docs/scaling/", false], + ["/layer-1-scaling/sidechains", "/developers/docs/scaling/sidechains/", false], + ["/layer-2-scaling/state-channels", "/developers/docs/scaling/state-channels/", false], + ["/developers/docs/privacy-enhancements", "/privacy/", false], + ["/developers/docs/wallets", "/wallets/", false], + ["/blog", "https://blog.ethereum.org", false] ] From f075597af9982b5585d9896f8e90890061f3eba9 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:18:34 -0700 Subject: [PATCH 2/3] revert: use of 307 redirects; use permanent --- redirects.config.js | 66 ++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/redirects.config.js b/redirects.config.js index 7e457f92f44..e98d3b4cf40 100644 --- a/redirects.config.js +++ b/redirects.config.js @@ -104,11 +104,11 @@ module.exports = [ ["/tds", "/trillion-dollar-security"], ["/10-years", "/10years"], ["/history", "/ethereum-forks"], - ["/developers/docs/scaling/rollups", "/developers/docs/scaling/#rollups", false], + ["/developers/docs/scaling/rollups", "/developers/docs/scaling/#rollups"], ["/eth2/get-involved/staking-community-grants", "/staking/"], - ["/developers/docs/zk", "/zero-knowledge-proofs/", false], + ["/developers/docs/zk", "/zero-knowledge-proofs/"], ["/developers/docs/security", "/developers/docs/smart-contracts/security/"], - ["/wallet", "/wallets/", false], + ["/wallet", "/wallets/"], ["/eth2/get-involved/medalla-data-challenge", "/contributing/"], ["/team", "/about/"], [ @@ -120,38 +120,50 @@ module.exports = [ "/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash", "/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/", ], - ["/%20wallets", "/wallets/", false], - ["/developers/docs/zk-snarks", "/zero-knowledge-proofs/", false], - ["/developers/docs/standards/erc-4337", "/roadmap/account-abstraction/", false], - ["/developers/docs/accounts/aa", "/roadmap/account-abstraction/", false], - ["/developers/docs/scaling/layer-2", "/developers/docs/scaling/#layer-2-scaling", false], - ["/developers/docs/account-abstraction", "/roadmap/account-abstraction/", false], - ["/developers/docs/accounts/abstraction", "/roadmap/account-abstraction/", false], - ["/developers/docs/rollups", "/developers/docs/scaling/#rollups", false], - ["/roadmap/future-proofing/:path+", "/roadmap/future-proofing/", false], - ["/eth2/what-is-eth2", "/roadmap/", false], - ["/developers/docs/accounts/account-abstraction", "/roadmap/account-abstraction/", false], + ["/%20wallets", "/wallets/"], + ["/developers/docs/zk-snarks", "/zero-knowledge-proofs/"], + ["/developers/docs/standards/erc-4337", "/roadmap/account-abstraction/"], + ["/developers/docs/accounts/aa", "/roadmap/account-abstraction/"], + [ + "/developers/docs/scaling/layer-2", + "/developers/docs/scaling/#layer-2-scaling", + ], + ["/developers/docs/account-abstraction", "/roadmap/account-abstraction/"], + ["/developers/docs/accounts/abstraction", "/roadmap/account-abstraction/"], + ["/developers/docs/rollups", "/developers/docs/scaling/#rollups"], + ["/roadmap/future-proofing/:path+", "/roadmap/future-proofing/"], + ["/eth2/what-is-eth2", "/roadmap/"], + [ + "/developers/docs/accounts/account-abstraction", + "/roadmap/account-abstraction/", + ], [ "/developers/docs/consensus-mechanisms/proof-of-stake", "/developers/docs/consensus-mechanisms/pos/", false, ], - ["/zero-knowledge", "/zero-knowledge-proofs/", false], - ["/developers/docs/smart-contracts/account-abstraction", "/roadmap/account-abstraction/", false], - ["/developers/docs/ides/%23web-based-ides", "/developers/docs/", false], - ["/developers/docs/daos", "/dao/", false], + ["/zero-knowledge", "/zero-knowledge-proofs/"], + [ + "/developers/docs/smart-contracts/account-abstraction", + "/roadmap/account-abstraction/", + ], + ["/developers/docs/ides/%23web-based-ides", "/developers/docs/"], + ["/developers/docs/daos", "/dao/"], [ "/developers/docs/consensus-mechanisms/pos/slashing", "/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/", false, ], - ["/wallets/security", "/security/", false], - ["/developers/docs/sharding", "/developers/docs/data-availability/", false], - ["/layer-2-scaling", "/layer-2/", false], - ["/layer-2-scaling/rollups", "/developers/docs/scaling/", false], - ["/layer-1-scaling/sidechains", "/developers/docs/scaling/sidechains/", false], - ["/layer-2-scaling/state-channels", "/developers/docs/scaling/state-channels/", false], - ["/developers/docs/privacy-enhancements", "/privacy/", false], - ["/developers/docs/wallets", "/wallets/", false], - ["/blog", "https://blog.ethereum.org", false] + ["/wallets/security", "/security/"], + ["/developers/docs/sharding", "/developers/docs/data-availability/"], + ["/layer-2-scaling", "/layer-2/"], + ["/layer-2-scaling/rollups", "/developers/docs/scaling/"], + ["/layer-1-scaling/sidechains", "/developers/docs/scaling/sidechains/"], + [ + "/layer-2-scaling/state-channels", + "/developers/docs/scaling/state-channels/", + ], + ["/developers/docs/privacy-enhancements", "/privacy/"], + ["/developers/docs/wallets", "/wallets/"], + ["/blog", "https://blog.ethereum.org"], ] From 4814341818d608dbafde4dd4b3595b99238c6af2 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:57:08 -0700 Subject: [PATCH 3/3] patch: use 307 temp route For /developers/docs/accounts/abstraction/ for potential future usage of this route --- redirects.config.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/redirects.config.js b/redirects.config.js index e98d3b4cf40..ddae7434e4a 100644 --- a/redirects.config.js +++ b/redirects.config.js @@ -129,7 +129,11 @@ module.exports = [ "/developers/docs/scaling/#layer-2-scaling", ], ["/developers/docs/account-abstraction", "/roadmap/account-abstraction/"], - ["/developers/docs/accounts/abstraction", "/roadmap/account-abstraction/"], + [ + "/developers/docs/accounts/abstraction", + "/roadmap/account-abstraction/", + false, // Selectively applying temporary for possible future route usage + ], ["/developers/docs/rollups", "/developers/docs/scaling/#rollups"], ["/roadmap/future-proofing/:path+", "/roadmap/future-proofing/"], ["/eth2/what-is-eth2", "/roadmap/"],