Repository navigation
redirects: remove 84 rules whose destination is a 404 - #2037
marcleblanc2 wants to merge 1 commit into
Conversation
Each of these rules fires, and sends the visitor to a page that does not exist (probed live, following redirects, final status 404). A redirect into a 404 is no better than the 404 itself; 71 of the 84 had no traffic in the 90 days to 2026-09-11. The 13 that did are listed in the pull request for a fix instead of a delete.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
❌ This PR breaks 1 redirect(s)Redirects are used so inbound traffic from external sources (links inside old versions of our product, bookmarks, search results, etc.) to old doc pages still reaches a relevant page. A correct entry maps the old page path, exactly as the browser requests it, straight to a page that exists today, with an optional #heading that exists on the destination page: {
source: '/old/section/page',
destination: '/new/section/page#heading-slug'
},Each section below explains how to fix the entries listed under it. Do not use redirects for broken internal links, internal links must be fixed properly to tame the tech debt snowball no one wants to deal with; the "Check links" PR check comment lists the links this PR broke, if any. Destination page does not existSet the redirect destination to the page that replaced it, or remove the rule if there is no replacement page; visitors then get our fancy 404 page, with links they can click to find where they're trying to go, and the search bar.
Reproduce locally with |
Fourth cleanup after #1966. Behaviour change, and this one needs a human eye, hence draft.
Each of these 84 rules fires and sends the visitor to a page that does not exist: probed every destination live, following up to 10 redirects, and kept only those whose final status is 404. A redirect into a 404 is no better than the 404 itself, so this PR deletes them all.
71 had zero hits in the 90 days to 2026-09-11 (per
viewership-metrics/reports/redirect-rules.mdon #1939). 13 still get traffic and probably deserve a fixed destination instead of a delete; likely targets where one exists:/admin/external_services/postgres/self-hosted/external_services/postgres/self-hosted/external-services/postgresexists/dev/documentation/dev/how-to/documentation_implementation/code_search/how-to/exhaustive/code-search/types/exhaustive/code-search/types/search-jobs/integration/google_gsuite/integration/google_workspace/integration/browser-extension/how-tos/google-workspace/admin/install/kubernetes/update/admin/deploy/kubernetes/update/self-hosted/deploy/kubernetes/upgrade/code_intelligence/explanations/code_navigation/explanations/code-navigation/code_intelligence/how-to/index_other_languages/code_navigation/how-to/index_other_languages/code-navigation/how-to/index-other-languagesexists/cody/core-concepts/embeddings/configure-embeddings/cody/embeddings/configure-embeddings/cody(embeddings removed)/code_navigation/how-to/adding_lsif_to_workflows/code-search/code-navigation/how-to/adding_lsif_to_workflows/admin/how-to/lsif-scip-migration?/admin/config/critical_config/admin/migration/3_11/admin/migrationor delete/app/cody/clients/app/codyor delete/cody/explanations/indexing/cody/embeddings/embedding-index/cody/cody/explanations/policies/cody/embeddings/configure-embeddings#policies/codyAlso
/admin/external_services/redis→/self-hosted/external_services/redis(0 hits) has the same underscore/hyphen typo as postgres and an obvious fix.All 84 removed rules with hits
/admin/external_services/postgres/self-hosted/external_services/postgres/dev/documentation/dev/how-to/documentation_implementation/code_search/how-to/exhaustive/code-search/types/exhaustive/integration/google_gsuite/integration/google_workspace/admin/install/kubernetes/update/admin/deploy/kubernetes/update/code_intelligence/explanations/code_navigation/explanations/code_intelligence/how-to/index_other_languages/code_navigation/how-to/index_other_languages/cody/core-concepts/embeddings/configure-embeddings/cody/embeddings/configure-embeddings/code_navigation/how-to/adding_lsif_to_workflows/code-search/code-navigation/how-to/adding_lsif_to_workflows/admin/config/critical_config/admin/migration/3_11/app/cody/clients/app/cody/explanations/indexing/cody/embeddings/embedding-index/cody/explanations/policies/cody/embeddings/configure-embeddings#policies/admin/monitoring/metrics_reference/admin/observability/metrics_guide/dev/architecture/life-of-a-search-query/dev/background-information/architecture/life-of-a-search-query/dev/architecture/architecture.dot/dev/background-information/architecture/architecture.dot/dev/architecture/life-of-a-ping/dev/background-information/architecture/life-of-a-ping/dev/architecture/life-of-a-repository/dev/background-information/architecture/life-of-a-repository/dev/architecture/search-pagination/dev/background-information/architecture/search-pagination/dev/codeintel/architecture/dev/background-information/codeintel/architecture/dev/codeintel/deployment/dev/background-information/codeintel/deployment/dev/codeintel/diagrams/architecture.dot/dev/background-information/codeintel/diagrams/architecture.dot/dev/codeintel/diagrams/definitions.mermaid/dev/background-information/codeintel/diagrams/definitions.mermaid/dev/codeintel/diagrams/extension-definitions.mermaid/dev/background-information/codeintel/diagrams/extension-definitions.mermaid/dev/codeintel/diagrams/extension-hover.mermaid/dev/background-information/codeintel/diagrams/extension-hover.mermaid/dev/codeintel/diagrams/extension-references.mermaid/dev/background-information/codeintel/diagrams/extension-references.mermaid/dev/codeintel/diagrams/hover.mermaid/dev/background-information/codeintel/diagrams/hover.mermaid/dev/codeintel/diagrams/references.mermaid/dev/background-information/codeintel/diagrams/references.mermaid/dev/codeintel/diagrams/resolve-page.mermaid/dev/background-information/codeintel/diagrams/resolve-page.mermaid/dev/codeintel/diagrams/upload.mermaid/dev/background-information/codeintel/diagrams/upload.mermaid/dev/codeintel/extensions/dev/background-information/codeintel/extensions/dev/codeintel/index/dev/background-information/codeintel/index/dev/codeintel/queries/dev/background-information/codeintel/queries/dev/codeintel/uploads/dev/background-information/codeintel/uploads/dev/graphql_api/dev/background-information/graphql_api/dev/observability/dev/background-information/observability/dev/postgresql/dev/background-information/postgresql/dev/renovate/dev/background-information/renovate/dev/tech_stack/dev/background-information/tech_stack/dev/telemetry/dev/background-information/telemetry/dev/testing/dev/background-information/testing/dev/web/build/dev/background-information/web/build/dev/code_host_integrations/dev/background-information/web/code_host_integrations/dev/web/graphql/dev/background-information/web/graphql/dev/web/index/dev/background-information/web/index/dev/web/web_app/dev/background-information/web/web_app/dev/phabricator_gitolite/dev/how-to/configure_phabricator_gitolite/dev/zoekt/dev/how-to/zoekt_local_dev/user/search/structural/code_search/reference/structural/user/search/opengrok/code_search/how-to/opengrok/user/search/scopes/code_search/how-to/scopes/user/code_intelligence/lsif_quickstart/user/code_intelligence/how-to/index_other_languages/user/code_intelligence/basic_code_intelligence/user/code_intelligence/explanations/search_based_code_intelligence/user/repository/badges/user/personalization/badges/user/quick_links/user/personalization/quick_links/user/themes/user/personalization/themes/dev/campaigns_database_layout.dot/dev/background-information/batch_changes/batch_changes_database_layout.dot/dev/campaigns_design/dev/background-information/batch_changes/batch_changes_design/dev/campaigns_development/dev/background-information/batch_changes/index/dev/automation_development/dev/background-information/batch_changes/index/dev/background-information/campaigns/campaigns_database_layout.dot/dev/background-information/batch_changes/batch_changes_database_layout.dot/campaigns/references/name-change/batch_changes/references/name-change/campaigns/references/batch_changes/references/campaigns/how-tos/batch_changes/how-tos/cli/references/campaigns/index/cli/references/batch/index/dev/background-information/continuous_integration/dev/background-information/ci/dev/how-to/add_and_use_logging/dev/how-to/add_logging/admin/install/kubernetes/helm/admin/deploy/kubernetes/helm/code_intelligence/explanations/diagrams/code_navigation/explanations/diagrams/code_intelligence/explanations/diagrams/index-states.mermaid/code_navigation/explanations/diagrams/index-states.mermaid/code_intelligence/explanations/diagrams/upload-states.mermaid/code_navigation/explanations/diagrams/upload-states.mermaid/code_intelligence/apidocs/code_navigation/apidocs/code_intelligence/how-to/code_navigation/how-to/code_intelligence/how-to/img/CodeReview.gif/code_navigation/how-to/img/CodeReview.gif/code_intelligence/how-to/img/extension-example.gif/code_navigation/how-to/img/extension-example.gif/code_intelligence/how-to/img/code_navigation/how-to/img/code_intelligence/references/faq/code_navigation/references/faq/code_intelligence/references/requirements/code_navigation/references/requirements/code_intelligence/references/code_navigation/references/cody/overview/app/cody/clients/app/cody/core-concepts/embeddings/embedding-index/cody/embeddings/embedding-index/cody/explanations/schedule_one_off_embeddings_jobs/cody/embeddings/configure-embeddings#schedule-embeddings-jobs/admin/external_services/redis/self-hosted/external_services/redis/admin/observability/.gitattributes/self-hosted/observability/.gitattributesVerified: first-match table changes on exactly these 84 paths (rule → none); file parses to 879 rules. Independent of the batch 2 and batch 3 PRs.