Skip to content

Conversation

@fairlighteth
Copy link
Contributor

@fairlighteth fairlighteth commented Dec 19, 2025

Description

Expand docs.cow.fi redirect coverage, consolidating legacy and versioned paths into canonical destinations and normalizing malformed URLs.

Changes

  • Add 301 redirects for all docs.cow.fi mappings from the remediation plan (Typedoc, solver spec, MEV Blocker, grants, widget, overview, typos)
  • Normalize malformed docs URL paths (e.g., /,) and remove duplicate redirect entries
Old URL Expected Status New URL
https://docs.cow.fi/solvers/in-depth-solver-specification/input-batch-auction-instances 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/overview-1/introduction 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/solvers/solvers 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_6_0.OrderClass 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_5_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_9_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_11_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/front-end/creating-app-ids/create-the-order-meta-data-file 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/cow-protocol/tutorials/solvers/from_shadow_to_prod 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-sdk/querying-the-cow-subgraph 301 https://docs.cow.fi/cow-protocol/integrate/api
https://docs.cow.fi/tutorials/cowswap-trades-with-a-gnosis-safe-wallet 301 https://docs.cow.fi/cow-protocol/tutorials/swap-in-safe-app
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/the-basics-of-erc-1271 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_4_0.OrderInteractionHooks 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/users-and-integrators/users/available-endpoints 301 https://docs.cow.fi/mevblocker/orderflow-originators/Endpoints
https://docs.cow.fi/tutorials/how-to-test-a-solver-locally 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/tutorials/how-to-write-a-solver 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/tutorials/solver-workshop 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_9_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v1_1_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v1_0_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/concepts/mev-concepts/sandwich-attacks 301 https://docs.cow.fi/mevblocker/concepts/MEV/MEV%20Attacks/sandwich-attacks
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/cow-protocol/tutorials/solvers 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/r 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/cow-protocol/tutorials/solvers?utm_source=cow.fi&utm_medium=web&utm_content=cow-protocol-solvers 301 https://docs.cow.fi/category/solver?
utm_source=cow.fi&utm_medium=web&utm_content=cow-protocol-solvers
https://docs.cow.fi/off-chain-services/in-depth-solver-specification/getting-notified-about-the-ranking 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/solvers/in-depth-solver-specification/getting-notified-about-the-ranking 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/off-chain-services/in-depth-solver-specification/sample-test-instances 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/CowShedSdk 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/TradeOptionalParameters 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=decipherclub.com 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?ref=decipherclub.com
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=blog.1inch.io 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?ref=blog.1inch.io
https://docs.cow.fi/solvers/how-to-build-a-solver/how-to-test-a-solver-locally 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/solvers/how-to-build-a-solver/how-to-write-a-solver 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/solvers/in-depth-solver-specification/output-batch-auction-solutions 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/solvers/in-depth-solver-specification/sample-test-instances 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/solvers/how-to-build-a-solver/solver-workshop 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/EcdsaSigningScheme 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/smart-contracts/eth-flow-contract/order-cancellation 301 https://docs.cow.fi/cow-protocol/reference/contracts/periphery/eth-flow
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_5_0.OrderClass 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/overview-1/batch-auctions 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/cow-protocol/tutorials/solvers/ 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_9_0.OrderClass 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/tutorials/solvers?ref=ournetwork.ghost.io 301 https://docs.cow.fi/category/solver?ref=ournetwork.ghost.io
https://docs.cow.fi/solvers/how-to-build-a-solver 301 https://docs.cow.fi/category/solver
https://docs.cow.fi/cow-protocol/tutorials/solvers?ref=blog.enclave.gg 301 https://docs.cow.fi/category/solver?ref=blog.enclave.gg
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/Ipfs 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/AcrossBridgeProviderOptions 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/PollResultUnexpectedError 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=blog.alignedlayer.com 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?
ref=blog.alignedlayer.com
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_1_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/smart-contract-wallet-orders 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/BridgeStatusResult 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/good-after-time-gat-orders 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/cow- 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/front-end/creating-app-ids/create-the-order-meta-data-file/additional-order-preferences 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/front-end/creating-app-ids/get-the-digest-hash-from-the-cid 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/tutorials/how-to-submit-orders-via-the-api/4.-signing-the-order 301 https://docs.cow.fi/cow-protocol/integrate/api
https://docs.cow.fi/cow-protocol/reference/apis/quote 301 https://docs.cow.fi/cow-protocol/reference/apis/orderbook
https://docs.cow.fi/off-chain-services/in-depth-solver-specification/the-batch-auction-optimization-problem 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_8_0.Metadata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/concepts/how-it-works 301 https://docs.cow.fi/category/how-it-works
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=ournetwork.ghost.io 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?
ref=ournetwork.ghost.io
https://docs.cow.fi/mevblocker/users-and-integrators/integrators/configuring-fee-recipient-address 301 https://docs.cow.fi/mevblocker/orderflow-originators/API-reference/configuring-fee-recipient-
address
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_5_0.Metadata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/introduction/overview 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/off-chain-services/solvers 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/tutorials/cowswap-trades-with-a-gnosis-safe-wallet/approving-the-tokens-to-sell 301 https://docs.cow.fi/cow-protocol/tutorials/swap-in-safe-app
https://docs.cow.fi/tutorials/cowswap-trades-with-a-gnosis-safe-wallet/running-the-tx-from-the-safe 301 https://docs.cow.fi/cow-protocol/tutorials/swap-in-safe-app
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/additional-use-cases 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/category/concepts-2 301 https://docs.cow.fi/category/concepts
https://docs.cow.fi/cow-protocol/concepts/intents 301 https://docs.cow.fi/cow-protocol/concepts/introduction/intents
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=blog.sunscreen.tech 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?
ref=blog.sunscreen.tech
https://docs.cow.fi/cow-sdk/sign-and-post-orders/step-2-sign-the-order 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_0_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_1_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_6_0.AppDataRootSchema 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/off-chain-services/in-depth-solver-specification/output-batch-auction-solutions 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/category/searchers?utm_source=cow.fi&utm_medium=web&utm_content=mev-blocker-learn-more 301 https://docs.cow.fi/mevblocker/searchers?utm_source=cow.fi&utm_medium=web&utm_content=mev-
blocker-learn-more
https://docs.cow.fi/front-end/creating-app-ids/create-the-order-meta-data-file/metadata 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_0_0.Quote 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_10_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/CowShedHooks 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions?ref=blog.1inch.com 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction?ref=blog.1inch.com
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderBookApi 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/category/users--integrators 301 https://docs.cow.fi/category/integrate
https://docs.cow.fi/tutorials/how-to-submit-orders-via-the-api 301 https://docs.cow.fi/cow-protocol/integrate/api
https://docs.cow.fi/cow-sdk/order-meta-data-appdata/create-a-meta-data-document 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-sdk/order-meta-data-appdata/bonus-cidv0-and-appdata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-sdk/order-meta-data-appdata/upload-document-to-ipfs 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/front-end/creating-app-ids/choose-the-appcode-for-the-app 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/front-end/creating-app-ids/upload-the-file-to-ipfs 301 https://docs.cow.fi/cow-protocol/integrate/widget
https://docs.cow.fi/tutorials/cowswap-trades-with-a-gnosis-safe-wallet/creating-the-order 301 https://docs.cow.fi/cow-protocol/tutorials/swap-in-safe-app
https://docs.cow.fi/cow-sdk/getting-started-with-the-sdk 301 https://docs.cow.fi/cow-protocol/integrate/sdk
https://docs.cow.fi/tutorials/submit-limit-orders-via-api/submitting-the-limit-order/1.-setting-allowance-for-the-sell-token 301 https://docs.cow.fi/cow-protocol/integrate/api
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/current-orders 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/tutorials/how-to-place-erc-1271-smart-contract-orders/security 301 https://docs.cow.fi/cow-protocol/reference/core/signing-schemes
https://docs.cow.fi/overview/cow-hooks/cow-hooks-example/requirements 301 https://docs.cow.fi/cow-protocol/concepts/order-types/cow-hooks
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/BridgeOrderParsingError 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/tutorials/how-to-submit-orders-via-the-api/1.-set-allowance-for-the-sell-token 301 https://docs.cow.fi/cow-protocol/integrate/api
https://docs.cow.fi/pt-BR/ 301 https://docs.cow.fi/
https://docs.cow.fi/cow-protocol/overview/what-is-cow-protocol 301 https://docs.cow.fi/cow-protocol
https://docs.cow.fi/smart-contracts/eth-flow-contract/order-creation 301 https://docs.cow.fi/cow-protocol/reference/contracts/periphery/eth-flow
https://docs.cow.fi/cow-sdk/order-meta-data-appdata/get-the-appdata-hex 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.Quote 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-sdk/sign-and-post-orders 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_0_0.Metadata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/CrossChainOrder 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.Widget 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/PriceQuality 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/TradingSdkOptions 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_5_0.AppDataRootSchema 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/category/users 301 https://docs.cow.fi/category/integrate
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/ThemedImage 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_1_0.AppDataRootSchema 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/usecases 301 https://docs.cow.fi/mevblocker
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_8_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/concepts/mev-concepts/what-is-backrunning 301 https://docs.cow.fi/mevblocker/concepts/MEV/MEV%20Attacks/what-is-backrunning
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_11_0.Widget 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/users-and-integrators/integrators/analytics 301 https://docs.cow.fi/mevblocker/orderflow-originators/API-reference/analytics
https://docs.cow.fi/mevblocker/users-and-integrators/users/sending-transactions-via-rpc 301 https://docs.cow.fi/mevblocker/orderflow-originators/API-reference/Sending-transactions
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/LimitTradeParameters 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_8_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.OrderInteractionHooks 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/SwapAdvancedSettings 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_4_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/users-and-integrators/users/cancelling-transactions 301 https://docs.cow.fi/mevblocker/orderflow-originators/API-reference/Cancelling-transactions
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_6_0.OrderClass 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_6_0.Quote 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/SigningScheme 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_5_0.Bridging 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/concepts/introduction/batch-auctions 301 https://docs.cow.fi/cow-protocol/concepts/introduction/fair-combinatorial-auction
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/OrderStatus 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/TraderParameters 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_6_0.OrderInteractionHooks 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/modules 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_1_0.Referrer 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/BungeeBridgeProvider 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v0_3_0.Metadata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/mevblocker/users-and-integrators/integrators/setting-up-free-cancellations 301 https://docs.cow.fi/mevblocker/orderflow-originators/API-reference/Cancelling-transactions
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/TwapStruct 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/mevblocker/concepts/mev-concepts/what-is-frontrunning 301 https://docs.cow.fi/mevblocker/concepts/MEV/MEV%20Attacks/what-is-frontrunning
https://docs.cow.fi/category/integrators 301 https://docs.cow.fi/category/integrate
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/IpfsConfig 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderBookApiError 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/AcrossBridgeProvider 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/TransactionParams 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/classes/MetadataApi 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/Twap 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/mevblocker/users-and-integrators/users/api 301 https://docs.cow.fi/mevblocker/orderflow-originators/Endpoints
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/EvmCall 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/BridgeCosts 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/BridgeQuoteAmountsAndCosts 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/ConditionalOrderArguments 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/solvers/in-depth-solver-specification/solver- 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/v2-ui-documentation 301 https://docs.cow.fi/cow-protocol/tutorials/cow-swap
https://docs.cow.fi/v2-ui-troubleshooting-guide 301 https://docs.cow.fi/cow-protocol/tutorials/cow-swap
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/GetOrderParams 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/modules 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/WeirollCommandFlags 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/governance/grants/application-process 301 https://docs.cow.fi/governance/grants/how-to-apply
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/SubgraphApi 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/OrderCancellationError.errorType 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/enums/PriceEstimationError.errorType 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/solvers/in-depth-solver-specification/slippage-accounting 301 https://docs.cow.fi/cow-protocol/reference/apis/solver
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_1_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_0_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/BridgeProviderQuoteError 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_6_0.Bridging 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/category/searchers 301 https://docs.cow.fi/mevblocker/searchers
https://docs.cow.fi/category/mev-concepts 301 https://docs.cow.fi/mevblocker/concepts/MEV
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/namespaces/OnchainOrderData 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/ChainInfo 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/namespaces/v0_3_0 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/CowError 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/WebUrl 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/interfaces/ApiContext 301 https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/ 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_0_0.Widget 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_3_0.CoWHook 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_6_0.UTMCodes 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data
https://docs.cow.fi/cow-protocol/reference/sdks/app-data/interfaces/v1_3_0.Metadata 301 https://docs.cow.fi/cow-protocol/reference/core/intents/app-data

@fairlighteth fairlighteth self-assigned this Dec 19, 2025
@fairlighteth fairlighteth requested a review from a team as a code owner December 19, 2025 15:55
@vercel
Copy link

vercel bot commented Dec 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
docs Ready Ready Preview Dec 19, 2025 3:56pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 19, 2025

Walkthrough

The PR updates vercel.json to redirect numerous external tutorial and content paths to internal cow-protocol documentation pages. It standardizes redirect status codes to 301 and introduces additional mappings for governance, MEV, solvers, widgets, and SDKs.

Changes

Cohort / File(s) Summary
Redirect Configuration Update
vercel.json
Updated 100+ redirect mappings to consolidate external tutorial paths (learn.cow.fi) to internal cow-protocol documentation routes; standardized status codes to 301 (permanent redirects); added new mappings for governance/grants, MEV-related paths, solver resources, widgets, SDKs, tutorials, and app-data/intents references.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Areas requiring extra attention:

  • Verify that all old external paths are correctly mapped to their corresponding internal documentation pages
  • Check for any duplicate or conflicting redirect entries that could cause routing issues
  • Ensure governance/grants, MEV, and solver paths resolve to the correct internal pages
  • Validate that the 301 status codes are applied consistently and appropriately to all entries
  • Confirm no broken redirect chains that could lead to 404s

Possibly related PRs

Suggested reviewers

  • harisang
  • pretf00d

Poem

🐰 Redirects hopping to new homes so bright,
From external paths to internal delight,
With 301s marching in perfect parade,
The documentation pathways are remade! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title accurately describes the main change—redirecting SDK and tutorial links to new paths—which aligns with the comprehensive redirect updates documented in the raw summary and PR objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description is comprehensive and well-structured, following the template with clear sections for Description and Changes, including a detailed table of old/new URL mappings.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/add-redirects

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@fairlighteth fairlighteth requested a review from a team December 19, 2025 15:56
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (6)
vercel.json (6)

40-44: Inconsistent redirect configuration: permanent: false vs statusCode: 301.

This entry uses permanent: false while the surrounding entries and the majority of this PR use statusCode: 301. The PR description mentions "standardizing redirect status codes to 301" — consider updating this entry for consistency.

Suggested fix
         {
             "source": "/front-end/cow-protocol-custom-linking",
             "destination": "/cow-protocol/tutorials/cow-swap",
-            "permanent": false
+            "statusCode": 301
         },

270-279: Remaining permanent: false entries are inconsistent with the PR goal.

Lines 273-278 still use permanent: false instead of statusCode: 301. Given this PR aims to standardize on 301 redirects, these should also be updated for consistency.

Suggested fix
         {
             "source": "/overview/cow-hooks/cow-hooks-example",
             "destination": "/cow-protocol/concepts/order-types/cow-hooks",
-            "permanent": false
+            "statusCode": 301
         },
         {
             "source": "/overview/cow-hooks/cow-hooks-faq",
             "destination": "/cow-protocol/concepts/order-types/cow-hooks",
-            "permanent": false
+            "statusCode": 301
         },

445-449: Another permanent: false entry to standardize.

Suggested fix
         {
             "source": "/tutorials/how-to-place-erc-1271-smart-contract-orders/smart-orders",
             "destination": "https://learn.cow.fi/tutorial/create-pre-signed-order",
-            "permanent": false
+            "statusCode": 301
         },

520-534: Multiple permanent: false entries remain.

These entries at lines 523, 528, and 533 still use the legacy permanent: false format.

Suggested fix
         {
             "source": "/overview/cow-hooks/cow-hooks-example/conclusion",
             "destination": "https://learn.cow.fi/tutorial/getting-started-order",
-            "permanent": false
+            "statusCode": 301
         },
         {
             "source": "/overview/cow-hooks/cow-hooks-example/configuration",
             "destination": "https://learn.cow.fi/tutorial/getting-started-order",
-            "permanent": false
+            "statusCode": 301
         },
         {
             "source": "/overview/cow-hooks/cow-hooks-example/permit-swap-and-bridge-cow-hook",
             "destination": "https://learn.cow.fi/tutorial/getting-started-order",
-            "permanent": false
+            "statusCode": 301
         },

720-728: Duplicate redirect entries for trailing slash variants.

Lines 721-724 and 726-729 define separate redirects for /cow-protocol/reference/sdks/app-data and /cow-protocol/reference/sdks/app-data/ (with trailing slash). Since "cleanUrls": true is enabled at line 2, Vercel typically normalizes these. You may be able to consolidate to a single entry without the trailing slash.


1175-1183: Similar duplicate: trailing slash variant.

Same situation as above with /cow-protocol/tutorials/solvers and /cow-protocol/tutorials/solvers/. Consider consolidating.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8853522 and 742c97b.

📒 Files selected for processing (1)
  • vercel.json (21 hunks)
🔇 Additional comments (5)
vercel.json (5)

595-599: Good catch on malformed URL redirect.

Redirecting /, to / handles a common typo where a comma is accidentally appended to the root URL. This is a valid cleanup.


600-684: LGTM: Grant and governance redirects consolidated appropriately.

The grant-related legacy paths (including Notion-style IDs like 52fc4674f2c64092975024d52015917a) are properly redirected to /governance/grants. This is a reasonable consolidation for 404 remediation.


730-924: App-data SDK TypeDoc paths consolidated correctly.

Large set of versioned interface/namespace paths from the TypeDoc-generated SDK documentation are all redirected to the canonical /cow-protocol/reference/core/intents/app-data page. This aligns with the PR goal of consolidating legacy versioned paths.


965-1174: Cow-SDK TypeDoc paths consolidated correctly.

Similar to the app-data redirects, these SDK class/enum/interface paths are appropriately redirected to the main SDK reference page.


1205-1218: The destination paths are correctly configured and all files exist in the repository. The folder structure at ./docs/mevblocker/concepts/MEV/MEV Attacks/ contains all three referenced files (sandwich-attacks.md, what-is-backrunning.md, what-is-frontrunning.md). The %20 encoding in the redirect destinations is the standard and correct way to represent spaces in URL paths—it properly maps to the actual filesystem folder with literal spaces.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants