From 6f45cf8f63fddde708ff25a5f3d19b33b6cf5cee Mon Sep 17 00:00:00 2001 From: Kody Jackson Date: Tue, 13 Oct 2026 08:55:38 -0500 Subject: [PATCH] fix(docs,www) - add in redirects for high-traffic 404s (#51500) ## Problem Missing redirects for changed paths and pages leading to an extra ~1500 404's in the past 24 hours for folks (and bots) browsing our web properties. ## Solution Added redirects ## Preview links https://zone-www-dot-com-git-kody-devrel-699-high-traff-584bc9-supabase.vercel.app/ (though most of these are docs links so the behavior actually won't be visible in the preview) --- apps/www/lib/redirects.js | 396 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 396 insertions(+) diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js index 3fe543816a9..5ede8f2a39f 100644 --- a/apps/www/lib/redirects.js +++ b/apps/www/lib/redirects.js @@ -3429,4 +3429,400 @@ module.exports = [ { permanent: true, source: '/homepage.md', destination: '/index.md' }, { permanent: true, source: '/.md', destination: '/index.md' }, { permanent: true, source: '/index', destination: '/' }, + // High-traffic 404s + { permanent: true, source: '/docs/graphql', destination: '/docs/guides/graphql' }, + { + permanent: true, + source: '/docs/guides/storage/management/pricing', + destination: '/docs/guides/storage/pricing', + }, + { + permanent: true, + source: '/changelog/29260-upcoming-changes-to-supabase-api-keys', + destination: 'https://github.com/orgs/supabase/discussions/29260', + }, + { + permanent: true, + source: '/docs/guides/platform/project-pausing', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/platform/project-pausing.md', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/platform/pausing', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/platform/free-plan-pausing', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/local-development/cli/migrations', + destination: '/docs/guides/local-development/database-migrations', + }, + { + permanent: true, + source: '/docs/guides/auth/auth-passkeys', + destination: '/docs/guides/auth/passkeys', + }, + { + permanent: true, + source: '/docs/guides/platform/security', + destination: '/docs/guides/security/platform-security', + }, + { + permanent: true, + source: '/docs/guides/database/connection-pooling', + destination: '/docs/guides/database/supavisor', + }, + { + permanent: true, + source: '/docs/guides/platform/access-tokens', + destination: '/docs/guides/platform/personal-access-tokens', + }, + { + permanent: true, + source: '/docs/guides/deployment/branching/billing', + destination: '/docs/guides/platform/manage-your-usage/branching', + }, + { permanent: true, source: '/docs/guides/api/api-settings', destination: '/docs/guides/api' }, + { permanent: true, source: '/docs/reference/llms.md', destination: '/llms.txt' }, + { permanent: true, source: '/docs/guides/api/rest', destination: '/docs/guides/api' }, + { + permanent: true, + source: '/docs/guides/platform/billing-on-free-plan', + destination: '/docs/guides/platform/billing-on-supabase', + }, + { + permanent: true, + source: '/docs/guides/functions/deno2', + destination: '/docs/guides/functions', + }, + { + permanent: true, + source: '/docs/guides/database/row-level-security', + destination: '/docs/guides/database/postgres/row-level-security', + }, + { + permanent: true, + source: '/docs/guides/auth/auth-email-password', + destination: '/docs/guides/auth/passwords', + }, + { permanent: true, source: '/docs/mcp', destination: '/docs/guides/ai-tools/mcp' }, + { + permanent: true, + source: '/docs/guides/database/pagination', + destination: '/docs/reference/javascript/using-modifiers-overridetypes', + }, + { + permanent: true, + source: '/docs/guides/platform/audit-logs', + destination: '/docs/guides/security/platform-audit-logs', + }, + // High-traffic 404s, batch 2 + { + permanent: true, + source: '/docs/guides/observability/automate-with-agents/all', + destination: '/docs/guides/observability/automate-with-agents', + }, + { + permanent: true, + source: '/docs/guides/platform/project-status', + destination: '/docs/guides/platform', + }, + { + permanent: true, + source: '/docs/guides/deploy/managing-environments', + destination: '/docs/guides/deployment/managing-environments', + }, + { + permanent: true, + source: '/docs/guides/api/sql-to-resth', + destination: '/docs/guides/api/sql-to-rest', + }, + { + permanent: true, + source: '/docs/guides/getting-started/quickstarts/react-native', + destination: '/docs/guides/auth/quickstarts/react-native', + }, + { + permanent: true, + source: '/docs/guides/database/database-performance', + destination: '/docs/guides/database/query-optimization', + }, + { + permanent: true, + source: '/docs/guides/storage/uploads/signed-urls', + destination: '/docs/guides/storage/serving/downloads', + }, + { + permanent: true, + source: '/docs/guides/realtime/testing', + destination: '/docs/guides/realtime', + }, + { + permanent: true, + source: '/docs/guides/platform/org-mfa-enforcement', + destination: '/docs/guides/platform/access-control', + }, + { + permanent: true, + source: '/docs/guides/database/backups', + destination: '/docs/guides/platform/backups', + }, + { + permanent: true, + source: '/docs/guides/observability/logs/query-logs-with-sql', + destination: '/docs/guides/observability/logs', + }, + { + permanent: true, + source: '/docs/guides/api/api-keys/models', + destination: '/docs/guides/getting-started/api-keys', + }, + { + permanent: true, + source: '/docs/guides/platform/free-plan-limits', + destination: '/docs/guides/platform/billing-on-supabase', + }, + { + permanent: true, + source: '/docs/guides/platform/manage-your-usage/database-size', + destination: '/docs/guides/platform/database-size', + }, + { + permanent: true, + source: '/docs/guides/platform/upgrading-and-pausing', + destination: '/docs/guides/platform/upgrading', + }, + { + permanent: true, + source: '/docs/guides/platform/fair-use-policy', + destination: '/docs/guides/platform/cost-control', + }, + { + permanent: true, + source: '/docs/guides/auth/oauth-server/overview', + destination: '/docs/guides/auth/oauth-server', + }, + { + permanent: true, + source: '/docs/guides/api/rest/pagination', + destination: '/docs/reference/javascript/using-modifiers-overridetypes', + }, + { + permanent: true, + source: '/docs/guides/integrations/build-a-supabase-integration/oauth-scopes', + destination: '/docs/guides/integrations/build-a-supabase-oauth-integration', + }, + { + permanent: true, + source: '/docs/guides/platform/project-settings', + destination: '/docs/guides/platform', + }, + { + permanent: true, + source: '/docs/guides/getting-started/quickstarts', + destination: '/docs/guides/getting-started', + }, + { + permanent: true, + source: '/docs/guides/api/pagination', + destination: '/docs/reference/javascript/using-modifiers-overridetypes', + }, + { + permanent: true, + source: '/docs/guides/platform/projects', + destination: '/docs/guides/platform', + }, + { + permanent: true, + source: '/docs/guides/getting-started/quickstart', + destination: '/docs/guides/getting-started', + }, + { + permanent: true, + source: '/docs/guides/security/shared-responsibility-model', + destination: '/docs/guides/deployment/shared-responsibility-model', + }, + { + permanent: true, + source: '/docs/guides/database/database-size', + destination: '/docs/guides/platform/database-size', + }, + { permanent: true, source: '/docs/guides/ai/mcp', destination: '/docs/guides/ai-tools/mcp' }, + { + permanent: true, + source: '/docs/guides/auth/identity-linking', + destination: '/docs/guides/auth/auth-identity-linking', + }, + { + permanent: true, + source: '/docs/guides/local-development/cli/github-action/testing', + destination: '/docs/guides/deployment/ci/testing', + }, + { permanent: true, source: '/docs/guides/platform/limits', destination: '/docs/guides/platform' }, + { + permanent: true, + source: '/docs/guides/platform/management-api', + destination: '/docs/reference/api/introduction', + }, + { + permanent: true, + source: '/docs/guides/database/extensions/btree_gist', + destination: '/docs/guides/database/extensions', + }, + { + permanent: true, + source: '/docs/guides/deployment/branching/pricing', + destination: '/docs/guides/platform/manage-your-usage/branching', + }, + { + permanent: true, + source: '/docs/guides/security/gdpr', + destination: '/docs/guides/security/gdpr-compliance', + }, + { + permanent: true, + source: '/docs/guides/platform/network-bans', + destination: '/docs/guides/platform/network-restrictions', + }, + { + permanent: true, + source: '/docs/guides/database/extensions/moddatetime', + destination: '/docs/guides/database/extensions', + }, + { + permanent: true, + source: '/docs/guides/platform/high-availability', + destination: '/docs/guides/platform/read-replicas', + }, + { + permanent: true, + source: '/docs/guides/platform/pausing-projects', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/auth/auth-otp', + destination: '/docs/guides/auth/auth-email-passwordless', + }, + { + permanent: true, + source: '/docs/guides/platform/manage-your-usage/spend-cap', + destination: '/docs/guides/platform/cost-control#spend-cap', + }, + { + permanent: true, + source: '/docs/guides/deployment/branching/overview', + destination: '/docs/guides/deployment/branching', + }, + { + permanent: true, + source: '/docs/guides/platform/compliance', + destination: '/docs/guides/security', + }, + { + permanent: true, + source: '/docs/guides/auth/jwt-signing-keys', + destination: '/docs/guides/auth/signing-keys', + }, + { + permanent: true, + source: '/docs/guides/api/migrating-to-new-api-keys', + destination: '/docs/guides/getting-started/migrating-to-new-api-keys', + }, + { permanent: true, source: '/docs/guides/deployment/ci', destination: '/docs/guides/deployment' }, + { + permanent: true, + source: '/docs/guides/database/typescript-support', + destination: '/docs/guides/api/rest/generating-types', + }, + { + permanent: true, + source: '/docs/guides/functions/getting-started', + destination: '/docs/guides/functions/quickstart', + }, + { + permanent: true, + source: '/docs/guides/database/extensions/pg-safeupdate', + destination: '/docs/guides/database/extensions', + }, + { + permanent: true, + source: '/docs/guides/api/rest/generated-types', + destination: '/docs/guides/api/rest/generating-types', + }, + { + permanent: true, + source: '/docs/guides/platform/backup-restore', + destination: '/docs/guides/platform/backups', + }, + { + permanent: true, + source: '/docs/guides/local-development/cli/seeding-your-database', + destination: '/docs/guides/local-development/seeding-your-database', + }, + { + permanent: true, + source: '/docs/guides/auth/quickstarts/flutter', + destination: '/docs/guides/getting-started/quickstarts/flutter', + }, + { + permanent: true, + source: '/docs/guides/database/migrations', + destination: '/docs/guides/deployment/database-migrations', + }, + { + permanent: true, + source: '/docs/guides/database/overview/advanced/self-hosting/configuration/storage', + destination: '/docs/guides/self-hosting/storage/config', + }, + { + permanent: true, + source: '/docs/guides/platform/paused-projects', + destination: '/docs/guides/platform/free-project-pausing', + }, + { + permanent: true, + source: '/docs/guides/local-development/cli/github-action/generating-types', + destination: '/docs/guides/deployment/ci/generating-types', + }, + { permanent: true, source: '/docs/guides/platform/sla', destination: '/sla' }, + { + permanent: true, + source: '/docs/guides/self-hosting/storage', + destination: '/docs/guides/self-hosting/storage/config', + }, + { + permanent: true, + source: '/docs/guides/api/joins-and-nesting', + destination: '/docs/guides/database/joins-and-nesting', + }, + { + permanent: true, + source: '/docs/guides/platform/gdpr', + destination: '/docs/guides/security/gdpr-compliance', + }, + { + permanent: true, + source: '/docs/guides/platform/manage-your-usage/log-retention', + destination: '/docs/guides/observability/logs', + }, + { + permanent: true, + source: '/docs/guides/platform/organizations', + destination: '/docs/guides/platform/access-control', + }, + { + permanent: true, + source: '/docs/guides/platform/rate-limits', + destination: '/docs/guides/auth/rate-limits', + }, ]