diff --git a/.eslintignore b/.eslintignore index b2fcc84b206..431dc0d283d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,6 +4,7 @@ dist node_modules .github .changeset +src/features/redirects/redirects.json scripts/reference/chainsToBe.json scripts/**/*.js data-source diff --git a/src/features/redirects/redirects.json b/src/features/redirects/redirects.json index 124ef231825..e028e239d28 100644 --- a/src/features/redirects/redirects.json +++ b/src/features/redirects/redirects.json @@ -1,87 +1,87 @@ { "redirects": [ { - "source": "docs/any-api/api-reference/", + "source": "docs/any-api/api-reference", "destination": "any-api/api-reference", "statusCode": 301 }, { - "source": "docs/any-api/data-providers/dns-ownership/", + "source": "docs/any-api/data-providers/dns-ownership", "destination": "any-api/data-providers/dns-ownership", "statusCode": 301 }, { - "source": "docs/any-api/data-providers/google-weather/", + "source": "docs/any-api/data-providers/google-weather", "destination": "any-api/data-providers/google-weather", "statusCode": 301 }, { - "source": "docs/any-api/data-providers/introduction/", + "source": "docs/any-api/data-providers/introduction", "destination": "any-api/data-providers/introduction", "statusCode": 301 }, { - "source": "docs/any-api/find-oracle/", + "source": "docs/any-api/find-oracle", "destination": "any-api/find-oracle", "statusCode": 301 }, { - "source": "docs/any-api/get-request/examples/api-array-response/", + "source": "docs/any-api/get-request/examples/api-array-response", "destination": "any-api/get-request/examples/array-response", "statusCode": 301 }, { - "source": "docs/any-api/get-request/examples/existing-job-request/", + "source": "docs/any-api/get-request/examples/existing-job-request", "destination": "any-api/get-request/examples/existing-job-request", "statusCode": 301 }, { - "source": "docs/any-api/get-request/examples/large-responses/", + "source": "docs/any-api/get-request/examples/large-responses", "destination": "any-api/get-request/examples/large-responses", "statusCode": 301 }, { - "source": "docs/any-api/get-request/examples/multi-variable-responses/", + "source": "docs/any-api/get-request/examples/multi-variable-responses", "destination": "any-api/get-request/examples/multi-variable-responses", "statusCode": 301 }, { - "source": "docs/any-api/get-request/examples/single-word-response/", + "source": "docs/any-api/get-request/examples/single-word-response", "destination": "any-api/get-request/examples/single-word-response", "statusCode": 301 }, { - "source": "docs/any-api/get-request/introduction/", + "source": "docs/any-api/get-request/introduction", "destination": "any-api/get-request/introduction", "statusCode": 301 }, { - "source": "docs/any-api/introduction/", + "source": "docs/any-api/introduction", "destination": "any-api/introduction", "statusCode": 301 }, { - "source": "docs/any-api/testnet-oracles/", + "source": "docs/any-api/testnet-oracles", "destination": "any-api/testnet-oracles", "statusCode": 301 }, { - "source": "docs/architecture-decentralized-model/", + "source": "docs/architecture-decentralized-model", "destination": "architecture-overview/architecture-decentralized-model", "statusCode": 301 }, { - "source": "docs/architecture-overview/", + "source": "docs/architecture-overview", "destination": "architecture-overview/architecture-overview", "statusCode": 301 }, { - "source": "docs/architecture-request-model/", + "source": "docs/architecture-request-model", "destination": "architecture-overview/architecture-request-model", "statusCode": 301 }, { - "source": "docs/off-chain-reporting/", + "source": "docs/off-chain-reporting", "destination": "architecture-overview/off-chain-reporting", "statusCode": 301 }, @@ -151,254 +151,242 @@ "statusCode": 301 }, { - "source": "docs/data-feeds/deprecating-feeds/", + "source": "docs/data-feeds/deprecating-feeds", "destination": "data-feeds/deprecating-feeds", "statusCode": 301 }, { - "source": "docs/data-feeds/ens/", + "source": "docs/data-feeds/ens", "destination": "data-feeds/ens", "statusCode": 301 }, { - "source": "docs/data-feeds/feed-registry/feed-registry-functions/", + "source": "docs/data-feeds/feed-registry/feed-registry-functions", "destination": "data-feeds/feed-registry/feed-registry-functions", "statusCode": 301 }, { - "source": "docs/data-feeds/feed-registry/", - "destination": "data-feeds/feed-registry/index", + "source": "docs/data-feeds/feed-registry", + "destination": "data-feeds/feed-registry", "statusCode": 301 }, { - "source": "docs/data-feeds/", - "destination": "data-feeds/index", + "source": "docs/data-feeds", + "destination": "data-feeds", "statusCode": 301 }, { - "source": "docs/data-feeds/l2-sequencer-feeds/", + "source": "docs/data-feeds/l2-sequencer-feeds", "destination": "data-feeds/l2-sequencer-feeds", "statusCode": 301 }, { - "source": "/docs/data-feeds/nft-floor-price/addresses/", + "source": "docs/data-feeds/nft-floor-price/addresses", "destination": "data-feeds/nft-floor-price/addresses", "statusCode": 301 }, { - "source": "docs/data-feeds/nft-floor-price/", - "destination": "data-feeds/nft-floor-price/index", + "source": "docs/data-feeds/nft-floor-price", + "destination": "data-feeds/nft-floor-price", "statusCode": 301 }, { - "source": "docs/data-feeds/price-feeds/addresses/", + "source": "docs/data-feeds/price-feeds/addresses", "destination": "data-feeds/price-feeds/addresses", "statusCode": 301 }, { - "source": "docs/data-feeds/price-feeds/api-reference/", + "source": "docs/data-feeds/price-feeds/api-reference", "destination": "data-feeds/price-feeds/api-reference", "statusCode": 301 }, { - "source": "docs/data-feeds/price-feeds/historical-data/", + "source": "docs/data-feeds/price-feeds/historical-data", "destination": "data-feeds/price-feeds/historical-data", "statusCode": 301 }, { - "source": "docs/data-feeds/price-feeds/", - "destination": "data-feeds/price-feeds/index", + "source": "docs/data-feeds/price-feeds", + "destination": "data-feeds/price-feeds", "statusCode": 301 }, { - "source": "/docs/data-feeds/proof-of-reserve/addresses/", + "source": "docs/data-feeds/proof-of-reserve/addresses", "destination": "data-feeds/proof-of-reserve/addresses", "statusCode": 301 }, { - "source": "docs/data-feeds/proof-of-reserve/", - "destination": "data-feeds/proof-of-reserve/index", + "source": "docs/data-feeds/proof-of-reserve", + "destination": "data-feeds/proof-of-reserve/", "statusCode": 301 }, { - "source": "docs/data-feeds/selecting-data-feeds/", + "source": "docs/data-feeds/selecting-data-feeds", "destination": "data-feeds/selecting-data-feeds", "statusCode": 301 }, - { "source": "/ethereum/", "destination": "ethereum", "statusCode": 301 }, { - "source": "docs/acquire-link/", + "source": "docs/acquire-link", "destination": "resources/acquire-link", "statusCode": 301 }, { - "source": "docs/contributing-to-chainlink/", + "source": "docs/contributing-to-chainlink", "destination": "resources/contributing-to-chainlink", "statusCode": 301 }, { - "source": "docs/create-a-chainlinked-project/", + "source": "docs/create-a-chainlinked-project", "destination": "resources/create-a-chainlinked-project", "statusCode": 301 }, { - "source": "docs/developer-communications/", + "source": "docs/developer-communications", "destination": "resources/developer-communications", "statusCode": 301 }, { - "source": "docs/ethereum-proof-of-stake-merge/", - "destination": "resources/ethereum-proof-of-stake-merge", - "statusCode": 301 - }, - { - "source": "docs/example-projects/", + "source": "docs/example-projects", "destination": "resources/example-projects", "statusCode": 301 }, { - "source": "docs/fund-your-contract/", + "source": "docs/fund-your-contract", "destination": "resources/fund-your-contract", "statusCode": 301 }, { - "source": "docs/getting-help/", + "source": "docs/getting-help", "destination": "resources/getting-help", "statusCode": 301 }, { - "source": "docs/glossary/", + "source": "docs/glossary", "destination": "resources/glossary", "statusCode": 301 }, { - "source": "docs/hackathon-resources/", + "source": "docs/hackathon-resources", "destination": "resources/hackathon-resources", "statusCode": 301 }, { - "source": "docs/hackathon-rules-waiver-release-and-code-of-conduct/", + "source": "docs/hackathon-rules-waiver-release-and-code-of-conduct", "destination": "resources/hackathon-rules-waiver-and-release", "statusCode": 301 }, { - "source": "docs/link-token-contracts/", + "source": "docs/link-token-contracts", "destination": "resources/link-token-contracts", "statusCode": 301 }, { - "source": "docs/solana/data-feeds-solana/", + "source": "docs/solana/data-feeds-solana", "destination": "solana/data-feeds/data-feeds-solana", "statusCode": 301 }, { - "source": "docs/solana/using-data-feeds-off-chain/", - "destination": "solana/data-feeds/using-data-feeds-off-chain", - "statusCode": 301 - }, - { - "source": "docs/solana/using-data-feeds-solana/", + "source": "docs/solana/using-data-feeds-solana", "destination": "solana/data-feeds/using-data-feeds-solana", "statusCode": 301 }, { - "source": "docs/solana/", + "source": "docs/solana", "destination": "solana/overview", "statusCode": 301 }, - { "source": "/solana/", "destination": "solana", "statusCode": 301 }, { - "source": "docs/vrf/v1/api-reference/", + "source": "docs/vrf/v1/api-reference", "destination": "vrf/v1/api-reference", "statusCode": 301 }, { - "source": "docs/vrf/v1/best-practices/", + "source": "docs/vrf/v1/best-practices", "destination": "vrf/v1/best-practices", "statusCode": 301 }, { - "source": "docs/vrf/v1/examples/get-a-random-number/", + "source": "docs/vrf/v1/examples/get-a-random-number", "destination": "vrf/v1/examples/get-a-random-number", "statusCode": 301 }, { - "source": "docs/vrf/v1/introduction/", + "source": "docs/vrf/v1/introduction", "destination": "vrf/v1/introduction", "statusCode": 301 }, { - "source": "docs/vrf/v1/security/", + "source": "docs/vrf/v1/security", "destination": "vrf/v1/security", "statusCode": 301 }, { - "source": "docs/vrf/v1/supported-networks/", + "source": "docs/vrf/v1/supported-networks", "destination": "vrf/v1/supported-networks", "statusCode": 301 }, { - "source": "docs/vrf/v2/best-practices/", + "source": "docs/vrf/v2/best-practices", "destination": "vrf/v2/best-practices", "statusCode": 301 }, { - "source": "docs/vrf/v2/direct-funding/", - "destination": "vrf/v2/direct-funding/design", + "source": "docs/vrf/v2/direct-funding", + "destination": "vrf/v2/direct-funding", "statusCode": 301 }, { - "source": "docs/vrf/v2/direct-funding/examples/get-a-random-number/", + "source": "docs/vrf/v2/direct-funding/examples/get-a-random-number", "destination": "vrf/v2/direct-funding/examples/get-a-random-number", "statusCode": 301 }, { - "source": "docs/vrf/v2/direct-funding/migration-from-v1/", + "source": "docs/vrf/v2/direct-funding/migration-from-v1", "destination": "vrf/v2/direct-funding/migration-from-v1", "statusCode": 301 }, { - "source": "docs/vrf/v2/direct-funding/supported-networks/", + "source": "docs/vrf/v2/direct-funding/supported-networks", "destination": "vrf/v2/direct-funding/supported-networks", "statusCode": 301 }, { - "source": "docs/vrf/v2/introduction/", + "source": "docs/vrf/v2/introduction", "destination": "vrf/v2/introduction", "statusCode": 301 }, { - "source": "docs/vrf/v2/security/", + "source": "docs/vrf/v2/security", "destination": "vrf/v2/security", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/", - "destination": "vrf/v2/subscription/design", + "source": "docs/vrf/v2/subscription", + "destination": "vrf/v2/subscription", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/examples/get-a-random-number/", + "source": "docs/vrf/v2/subscription/examples/get-a-random-number", "destination": "vrf/v2/subscription/examples/get-a-random-number", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/examples/programmatic-subscription/", + "source": "docs/vrf/v2/subscription/examples/programmatic-subscription", "destination": "vrf/v2/subscription/examples/programmatic-subscription", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/migration-from-v1/", + "source": "docs/vrf/v2/subscription/migration-from-v1", "destination": "vrf/v2/subscription/migration-from-v1", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/supported-networks/", + "source": "docs/vrf/v2/subscription/supported-networks", "destination": "vrf/v2/subscription/supported-networks", "statusCode": 301 }, { - "source": "docs/vrf/v2/subscription/ui/", + "source": "docs/vrf/v2/subscription/ui", "destination": "vrf/v2/subscription/ui", "statusCode": 301 }, @@ -423,14 +411,484 @@ "statusCode": 301 }, { - "source": "solana/using-data-feeds-solana", - "destination": "solana/data-feeds/using-data-feeds-solana", + "source": "docs/using-chainlink-reference-contracts", + "destination": "data-feeds/price-feeds", "statusCode": 301 }, { - "source": "docs/using-chainlink-reference-contracts", - "destination": "data-feeds/overview", - "statusCode": 301 + "source": "docs", + "destination": "/", + "statuscode": 301 + }, + { + "source": "vrf", + "destination": "vrf/v2/introduction", + "statuscode": 301 + }, + { + "source": "keepers", + "destination": "chainlink-automation/compatible-contracts", + "statuscode": 301 + }, + { + "source": "feeds", + "destination": "data-feeds", + "statuscode": 301 + }, + { + "source": "any-api", + "destination": "any-api/get-request/introduction", + "statuscode": 301 + }, + { + "source": "connect", + "destination": "resources/developer-communications", + "statuscode": 301 + }, + { + "source": "docs/getting-started", + "destination": "getting-started/conceptual-overview", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keeper-network", + "destination": "chainlink-automation/introduction", + "statuscode": 301 + }, + { + "source": "docs/kovan-keeper-network-beta", + "destination": "chainlink-automation/introduction", + "statuscode": 301 + }, + { + "source": "docs/adapters", + "destination": "chainlink-nodes/oracle-jobs/task-types/tasks", + "statuscode": 301 + }, + { + "source": "docs/addresses-and-job-ids", + "destination": "resources/link-token-contracts", + "statuscode": 301 + }, + { + "source": "docs/contract-creators-overview", + "destination": "getting-started/conceptual-overview", + "statuscode": 301 + }, + { + "source": "docs/user-guides", + "destination": "getting-started/conceptual-overview", + "statuscode": 301 + }, + { + "source": "docs/paying-for-smart-contracts-oracles", + "destination": "resources/fund-your-contract", + "statuscode": 301 + }, + { + "source": "docs/data-provider-nodes-list", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/genesis-volatility", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/example-walkthrough", + "destination": "vrf/v2/introduction", + "statuscode": 301 + }, + { + "source": "docs/node-operator-overview", + "destination": "chainlink-nodes", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/best-practices", + "destination": "chainlink-automation/compatible-contracts", + "statuscode": 301 + }, + { + "source": "docs/beginners-tutorial", + "destination": "getting-started/conceptual-overview", + "statuscode": 301 + }, + { + "source": "docs/use-your-first-contract", + "destination": "getting-started/deploy-your-first-contract", + "statuscode": 301 + }, + { + "source": "docs/install-metamask", + "destination": "getting-started/deploy-your-first-contract/#install-and-fund-your-metamask-wallet", + "statuscode": 301 + }, + { + "source": "docs/chainlink-alarm-clock", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/flightaware-chainlink-testnet", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/lcx-testnet", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/google-weather", + "destination": "any-api/data-providers/google-weather", + "statuscode": 301 + }, + { + "source": "docs/dns-ownership", + "destination": "any-api/data-providers/dns-ownership", + "statuscode": 301 + }, + { + "source": "docs/xdai-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=gnosis-chain", + "statuscode": 301 + }, + { + "source": "docs/binance-smart-chain-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=bnb-chain", + "statuscode": 301 + }, + { + "source": "docs/faq", + "destination": "ethereum", + "statuscode": 301 + }, + { + "source": "docs/chainlink-node-api-reference", + "destination": "chainlink-nodes/configuration-variables", + "statuscode": 301 + }, + { + "source": "docs/decentralized-oracles-ethereum-mainnet", + "destination": "any-api/testnet-oracles", + "statuscode": 301 + }, + { + "source": "docs/any-api-testnet-nodes", + "destination": "any-api/testnet-oracles", + "statuscode": 301 + }, + { + "source": "docs/request-and-receive-data", + "destination": "any-api/introduction", + "statuscode": 301 + }, + { + "source": "docs/make-a-http-get-request", + "destination": "any-api/get-request/introduction", + "statuscode": 301 + }, + { + "source": "docs/single-word-response", + "destination": "any-api/get-request/examples/single-word-response", + "statuscode": 301 + }, + { + "source": "docs/multi-variable-responses", + "destination": "any-api/get-request/examples/multi-variable-responses", + "statuscode": 301 + }, + { + "source": "docs/api-array-response", + "destination": "any-api/get-request/examples/array-response", + "statuscode": 301 + }, + { + "source": "docs/large-responses", + "destination": "any-api/get-request/examples/large-responses", + "statuscode": 301 + }, + { + "source": "docs/existing-job-request", + "destination": "any-api/get-request/examples/existing-job-request", + "statuscode": 301 + }, + { + "source": "docs/listing-services", + "destination": "any-api/find-oracle", + "statuscode": 301 + }, + { + "source": "docs/any-api-testnet-oracles", + "destination": "any-api/testnet-oracles", + "statuscode": 301 + }, + { + "source": "docs/chainlink-framework", + "destination": "any-api/api-reference", + "statuscode": 301 + }, + { + "source": "docs/data-provider-nodes", + "destination": "any-api/data-providers/introduction", + "statuscode": 301 + }, + { + "source": "docs/workshop", + "destination": "ethereum", + "statuscode": 301 + }, + { + "source": "docs/chainlinktmī¸", + "destination": "https://chain.link/terms", + "statuscode": 301 + }, + { + "source": "docs/terms-of-use", + "destination": "https://chain.link/terms", + "statuscode": 301 + }, + { + "source": "docs/privacy-policy", + "destination": "https://chain.link/privacy-policy", + "statuscode": 301 + }, + { + "source": "docs/chainlink-vrf-api-reference", + "destination": "vrf/v2/introduction", + "statuscode": 301 + }, + { + "source": "docs/chainlink-vrf", + "destination": "vrf/v2/introduction", + "statuscode": 301 + }, + { + "source": "docs/vrf/v2/examples/get-a-random-number", + "destination": "vrf/v2/subscription/examples/get-a-random-number", + "statuscode": 301 + }, + { + "source": "docs/get-a-random-number", + "destination": "vrf/v2/subscription/examples/get-a-random-number", + "statuscode": 301 + }, + { + "source": "docs/chainlink-vrf/example-contracts", + "destination": "vrf/v2/subscription/examples/programmatic-subscription", + "statuscode": 301 + }, + { + "source": "docs/chainlink-vrf-best-practices", + "destination": "vrf/v2/best-practices", + "statuscode": 301 + }, + { + "source": "docs/vrf-security-considerations", + "destination": "vrf/v2/security", + "statuscode": 301 + }, + { + "source": "docs/vrf-contracts", + "destination": "vrf/v2/subscription/supported-networks", + "statuscode": 301 + }, + { + "source": "docs/chainlink-vrf/migration-vrf-v1-v2", + "destination": "vrf/v2/subscription/migration-from-v1", + "statuscode": 301 + }, + { + "source": "avasummit", + "destination": "vrf/v2/introduction", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/introduction", + "destination": "chainlink-automation/introduction", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/job-scheduler", + "destination": "chainlink-automation/job-scheduler", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/register-upkeep", + "destination": "chainlink-automation/register-upkeep", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/compatible-contracts", + "destination": "chainlink-automation/compatible-contracts", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/manage-upkeeps", + "destination": "chainlink-automation/manage-upkeeps", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/flexible-upkeeps", + "destination": "chainlink-automation/flexible-upkeeps", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/util-overview", + "destination": "chainlink-automation/util-overview", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/utility-contracts", + "destination": "chainlink-automation/utility-contracts", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/overview", + "destination": "chainlink-automation/overview", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/supported-networks", + "destination": "chainlink-automation/supported-networks", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/keeper-economics", + "destination": "chainlink-automation/automation-economics", + "statuscode": 301 + }, + { + "source": "docs/chainlink-keepers/keeper-release-notes", + "destination": "chainlink-automation/automation-release-notes", + "statuscode": 301 + }, + { + "source": "docs/reference-contracts", + "destination": "data-feeds/price-feeds/addresses", + "statuscode": 301 + }, + { + "source": "docs/get-the-latest-price", + "destination": "data-feeds/price-feeds", + "statuscode": 301 + }, + { + "source": "docs/deprecating-feeds", + "destination": "data-feeds/deprecating-feeds", + "statuscode": 301 + }, + { + "source": "docs/feed-registry", + "destination": "data-feeds/feed-registry", + "statuscode": 301 + }, + { + "source": "docs/feed-registry-functions", + "destination": "data-feeds/feed-registry/feed-registry-functions", + "statuscode": 301 + }, + { + "source": "docs/arbitrum-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=arbitrum", + "statuscode": 301 + }, + { + "source": "docs/avalanche-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=avalanche", + "statuscode": 301 + }, + { + "source": "docs/bnb-chain-addresses", + "destination": "data-feeds/price-feeds/addresses/?network=bnb-chain", + "statuscode": 301 + }, + { + "source": "docs/ethereum-addresses", + "destination": "data-feeds/price-feeds/addresses/?network=ethereum", + "statuscode": 301 + }, + { + "source": "docs/fantom-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=fantom", + "statuscode": 301 + }, + { + "source": "docs/data-feeds-gnosis-chain", + "destination": "data-feeds/price-feeds/addresses/?network=gnosis-chain", + "statuscode": 301 + }, + { + "source": "docs/harmony-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=harmony", + "statuscode": 301 + }, + { + "source": "docs/huobi-eco-chain-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=heco-chain", + "statuscode": 301 + }, + { + "source": "docs/data-feeds-klaytn", + "destination": "data-feeds/price-feeds/addresses/?network=klaytn", + "statuscode": 301 + }, + { + "source": "docs/data-feeds-metis", + "destination": "data-feeds/price-feeds/addresses/?network=metis", + "statuscode": 301 + }, + { + "source": "docs/data-feeds-moonbeam", + "destination": "data-feeds/price-feeds/addresses/?network=moonbeam", + "statuscode": 301 + }, + { + "source": "docs/data-feeds-moonriver", + "destination": "data-feeds/price-feeds/addresses/?network=moonriver", + "statuscode": 301 + }, + { + "source": "docs/optimism-price-feeds", + "destination": "data-feeds/price-feeds/addresses/?network=optimism", + "statuscode": 301 + }, + { + "source": "docs/matic-addresses", + "destination": "data-feeds/price-feeds/addresses/?network=polygon", + "statuscode": 301 + }, + { + "source": "docs/ens", + "destination": "data-feeds/ens", + "statuscode": 301 + }, + { + "source": "docs/l2-sequencer-flag", + "destination": "data-feeds/l2-sequencer-feeds", + "statuscode": 301 + }, + { + "source": "docs/historical-price-data", + "destination": "data-feeds/price-feeds/historical-data", + "statuscode": 301 + }, + { + "source": "docs/price-feeds-api-reference", + "destination": "data-feeds/price-feeds/api-reference", + "statuscode": 301 + }, + { + "source": "docs/selecting-data-feeds", + "destination": "data-feeds/selecting-data-feeds", + "statuscode": 301 + }, + { + "source": "docs/ethereum-proof-of-stake-merge", + "destination": "/", + "statuscode": 301 } ] } diff --git a/src/pages/[...redirect].astro b/src/pages/[...redirect].astro index c8f81c8f749..0b351c34a0e 100644 --- a/src/pages/[...redirect].astro +++ b/src/pages/[...redirect].astro @@ -14,7 +14,10 @@ export async function getStaticPaths(): Promise { return { params: { redirect: sanitizeSource(entry.source) }, props: { - to: entry.destination.charAt(0) === "/" ? entry.destination : "/" + entry.destination, + to: + entry.destination.charAt(0) === "/" || entry.destination.includes("https://") + ? entry.destination + : "/" + entry.destination, }, } })