diff --git a/data/deprecations/14-0-nfs-fot-git-repository-storage.yml b/data/deprecations/14-0-nfs-fot-git-repository-storage.yml
index 31d98169730f96ccb394cd26044d739fd945b31d..b698f04e74a3add3c5b9ac9e9e5f3debcfc08530 100644
--- a/data/deprecations/14-0-nfs-fot-git-repository-storage.yml
+++ b/data/deprecations/14-0-nfs-fot-git-repository-storage.yml
@@ -7,11 +7,11 @@
 
     Gitaly Cluster offers tremendous benefits for our customers such as:
 
-    - [Variable replication factors](https://docs.gitlab.com/ee/administration/gitaly/index.html#replication-factor).
-    - [Strong consistency](https://docs.gitlab.com/ee/administration/gitaly/index.html#strong-consistency).
-    - [Distributed read capabilities](https://docs.gitlab.com/ee/administration/gitaly/index.html#distributed-reads).
+    - [Variable replication factors](https://docs.gitlab.com/ee/administration/gitaly/#replication-factor).
+    - [Strong consistency](https://docs.gitlab.com/ee/administration/gitaly/#strong-consistency).
+    - [Distributed read capabilities](https://docs.gitlab.com/ee/administration/gitaly/#distributed-reads).
 
-    We encourage customers currently using NFS for Git repositories to plan their migration by reviewing our documentation on [migrating to Gitaly Cluster](https://docs.gitlab.com/ee/administration/gitaly/index.html#migrate-to-gitaly-cluster).
+    We encourage customers currently using NFS for Git repositories to plan their migration by reviewing our documentation on [migrating to Gitaly Cluster](https://docs.gitlab.com/ee/administration/gitaly/#migrate-to-gitaly-cluster).
 
   reporter: mjwood
   stage: create
diff --git a/data/deprecations/14-10-old-search-migration-removal.yml b/data/deprecations/14-10-old-search-migration-removal.yml
index 260880dda57d753523986efed378b833d56a7d32..3ab5facd0fdb5b3ffcb7918b3c17c1bd4f865e21 100644
--- a/data/deprecations/14-10-old-search-migration-removal.yml
+++ b/data/deprecations/14-10-old-search-migration-removal.yml
@@ -6,7 +6,7 @@
     As Advanced Search migrations usually require support multiple code paths for a long period of time,
     it's important to clean those up when we safely can. We use GitLab major version upgrades as a safe
     time to remove backward compatibility for indices that have not been fully migrated. See the
-    [upgrade documentation](https://docs.gitlab.com/ee/update/index.html#upgrading-to-a-new-major-version) for details.
+    [upgrade documentation](https://docs.gitlab.com/ee/update/#upgrading-to-a-new-major-version) for details.
   stage: enablement
   tiers: premium, ultimate
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/359133
diff --git a/data/deprecations/14-5-deprecation-versions-packagetype.yml b/data/deprecations/14-5-deprecation-versions-packagetype.yml
index 88b0133d4d371f6ef46fdbd0acad3af88c634db1..cf7fb2cc92a110edffb95b83fca60b06e883f8de 100644
--- a/data/deprecations/14-5-deprecation-versions-packagetype.yml
+++ b/data/deprecations/14-5-deprecation-versions-packagetype.yml
@@ -3,7 +3,7 @@
   removal_milestone: "15.0"  # The milestone when this feature is planned to be removed
   breaking_change: true
   body: |  # Do not modify this line, instead modify the lines below.
-    As part of the work to create a [Package Registry GraphQL API](https://gitlab.com/groups/gitlab-org/-/epics/6318), the Package group deprecated the `Version` type for the basic `PackageType` type and moved it to [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/index.html#packagedetailstype).
+    As part of the work to create a [Package Registry GraphQL API](https://gitlab.com/groups/gitlab-org/-/epics/6318), the Package group deprecated the `Version` type for the basic `PackageType` type and moved it to [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/#packagedetailstype).
 
     In milestone 15.0, we will completely remove `Version` from `PackageType`.
   stage: package
diff --git a/data/deprecations/14-7-deprecate-static-site-editor.yml b/data/deprecations/14-7-deprecate-static-site-editor.yml
index 3a41fdc5058a68b4e849096f761603f55419d15f..3d19eb512692057773e74c2fb44b0a0eb43979d5 100644
--- a/data/deprecations/14-7-deprecate-static-site-editor.yml
+++ b/data/deprecations/14-7-deprecate-static-site-editor.yml
@@ -2,13 +2,13 @@
   announcement_milestone: "14.7"  # The milestone when this feature was first announced as deprecated.
   removal_milestone: "15.0"  # The milestone when this feature is planned to be removed
   body: |  # Do not modify this line, instead modify the lines below.
-    The Static Site Editor will no longer be available starting in GitLab 15.0. Improvements to the Markdown editing experience across GitLab will deliver similiar benefit but with a wider reach. Incoming requests to the Static Site Editor will be redirected to the [Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/index.html).
+    The Static Site Editor will no longer be available starting in GitLab 15.0. Improvements to the Markdown editing experience across GitLab will deliver similiar benefit but with a wider reach. Incoming requests to the Static Site Editor will be redirected to the [Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/).
 
-    Current users of the Static Site Editor can view the [documentation](https://docs.gitlab.com/ee/user/project/web_ide/index.html) for more information, including how to remove the configuration files from existing projects.
+    Current users of the Static Site Editor can view the [documentation](https://docs.gitlab.com/ee/user/project/web_ide/) for more information, including how to remove the configuration files from existing projects.
 # The following items are not published on the docs page, but may be used in the future.
   stage: Create  # (optional - may be required in the future) String value of the stage that the feature was created in. e.g., Growth
   tiers: [Free, Premium, Ultimate]  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/347137  # (optional) This is a link to the deprecation issue in GitLab
-  documentation_url: https://docs.gitlab.com/ee/user/project/web_ide/index.html  # (optional) This is a link to the current documentation page
+  documentation_url: https://docs.gitlab.com/ee/user/project/web_ide/  # (optional) This is a link to the current documentation page
   image_url:  # (optional) This is a link to a thumbnail image depicting the feature
   video_url:  # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
diff --git a/data/deprecations/14-7-sidekiq-metrics-health-check-donfig.yml b/data/deprecations/14-7-sidekiq-metrics-health-check-donfig.yml
index 5cab2283c23b7127fced045695f6d543b9ba0f49..69c8408be84a99ae3a592a6fb984aec0ed40cfbd 100644
--- a/data/deprecations/14-7-sidekiq-metrics-health-check-donfig.yml
+++ b/data/deprecations/14-7-sidekiq-metrics-health-check-donfig.yml
@@ -12,7 +12,7 @@
     to explicitly set separate ports for metrics and health-checks.
     The newly introduced settings for `sidekiq['health_checks_*']`
     should always be set in `gitlab.rb`.
-    For more information, check the documentation for [configuring Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/index.html).
+    For more information, check the documentation for [configuring Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/).
 
     These changes also require updates in either Prometheus to scrape the new endpoint or k8s health-checks to target the new
     health-check port to work properly, otherwise either metrics or health-checks will disappear.
diff --git a/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml b/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
index 9e9e5f7c5f798592a720740f0c404fdc8a8c762d..6c85ba07c0d1575be8fcb902ba73e9d29a73383e 100644
--- a/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
+++ b/data/deprecations/14-8-compliance-required-pipeline-configuration-premium.yml
@@ -9,6 +9,6 @@
     This change to move the feature to GitLab Ultimate tier is intended to help our features better align with our [pricing philosophy](https://handbook.gitlab.com/handbook/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
 
     This change will also help GitLab remain consistent in its tiering strategy with the other related Ultimate-tier features of:
-    [Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration).
+    [Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/#compliance-pipeline-configuration).
 # The following items are not published on the docs page, but may be used in the future.
   stage: "Manage"
diff --git a/data/deprecations/14-8-deprecate-projectFingerprint-from-PipelineSecurityReportFinding-GraphQL.yml b/data/deprecations/14-8-deprecate-projectFingerprint-from-PipelineSecurityReportFinding-GraphQL.yml
index 2b68423f1faaf09cc38ec4c9754f8f190e0c05db..5944b8d6ac42fe567c3c601059498b3dc7c55dc8 100644
--- a/data/deprecations/14-8-deprecate-projectFingerprint-from-PipelineSecurityReportFinding-GraphQL.yml
+++ b/data/deprecations/14-8-deprecate-projectFingerprint-from-PipelineSecurityReportFinding-GraphQL.yml
@@ -4,7 +4,7 @@
   breaking_change: true  # If this deprecation is a breaking change, set this value to true
   reporter: matt_wilson  # GitLab username of the person reporting the deprecation
   body: |  # Do not modify this line, instead modify the lines below.
-    The `projectFingerprint` field in the [`PipelineSecurityReportFinding`](https://docs.gitlab.com/ee/api/graphql/reference/index.html#pipelinesecurityreportfinding)
+    The `projectFingerprint` field in the [`PipelineSecurityReportFinding`](https://docs.gitlab.com/ee/api/graphql/reference/#pipelinesecurityreportfinding)
     GraphQL object is being deprecated. This field contains a "fingerprint" of security findings used to determine uniqueness.
     The method for calculating fingerprints has changed, resulting in different values. Going forward, the new values will be
     exposed in the UUID field. Data previously available in the `projectFingerprint` field will eventually be removed entirely.
diff --git a/data/deprecations/14-8-graphql-runner-active.yml b/data/deprecations/14-8-graphql-runner-active.yml
index ff7da21e9b8af03224c4d573cfa49d459e050869..a719a1f49bdd029fe92148d3c93af51879bee796 100644
--- a/data/deprecations/14-8-graphql-runner-active.yml
+++ b/data/deprecations/14-8-graphql-runner-active.yml
@@ -35,7 +35,7 @@
   # like [Free, Silver, Gold, Core, Premium, Ultimate]
   tiers:
   # Links to documentation and thumbnail image
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#cirunner
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#cirunner
   image_url:
   # Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
   video_url:
diff --git a/data/deprecations/14-8-iteration-started-field.yml b/data/deprecations/14-8-iteration-started-field.yml
index 8150467d5c55e8a0acad1d7a498a6f0b455284a6..1299014452fe87efabf887a0906e04e36ab07df4 100644
--- a/data/deprecations/14-8-iteration-started-field.yml
+++ b/data/deprecations/14-8-iteration-started-field.yml
@@ -5,7 +5,7 @@
   removal_date: "2022-05-22"  # The date of the milestone release when this feature was first announced as deprecated. This should almost always be the 22nd of a month (YYYY-MM-22), unless you did an out of band blog post.
   breaking_change: true  # If this deprecation is a breaking change, set this value to true
   body: |  # Do not modify this line, instead modify the lines below.
-    The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
+    The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/#iterationstate)
     and [iterations REST API](https://docs.gitlab.com/ee/api/iterations.html#list-project-iterations) is deprecated.
 
     The GraphQL API version will be removed in GitLab 16.0. This state is being replaced with the `current` state (already available)
diff --git a/data/deprecations/14-8-request-profiling.yml b/data/deprecations/14-8-request-profiling.yml
index ed080993abce6265b1f857077a77a1b9bc170850..1750154f9032887048e7f9ff38898bfe36b7b35d 100644
--- a/data/deprecations/14-8-request-profiling.yml
+++ b/data/deprecations/14-8-request-profiling.yml
@@ -4,7 +4,7 @@
   breaking_change: true
   reporter: iroussos
   body: |  # Do not modify this line, instead modify the lines below.
-    [Request profiling](https://docs.gitlab.com/ee/administration/monitoring/performance/index.html) is deprecated in GitLab 14.8 and scheduled for removal in GitLab 15.0.
+    [Request profiling](https://docs.gitlab.com/ee/administration/monitoring/performance/) is deprecated in GitLab 14.8 and scheduled for removal in GitLab 15.0.
 
     We're working on [consolidating our profiling tools](https://gitlab.com/groups/gitlab-org/-/epics/7327) and making them more easily accessible.
     We [evaluated](https://gitlab.com/gitlab-org/gitlab/-/issues/350152) the use of this feature and we found that it is not widely used.
@@ -14,4 +14,4 @@
   stage: Monitor
   tiers: [Free, Premium, Ultimate]
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/352488
-  documentation_url: https://docs.gitlab.com/ee/administration/monitoring/performance/index.html
+  documentation_url: https://docs.gitlab.com/ee/administration/monitoring/performance/
diff --git a/data/deprecations/14-8-sast-secret-analyzer-image.yml b/data/deprecations/14-8-sast-secret-analyzer-image.yml
index 113fd9bb1bc9fae5b4d1fd7748ad9eff4faccf4b..b383433b9fbbeefe07d6445487eabeb2f40dcdcc 100644
--- a/data/deprecations/14-8-sast-secret-analyzer-image.yml
+++ b/data/deprecations/14-8-sast-secret-analyzer-image.yml
@@ -15,7 +15,7 @@
     - For Container Scanning, the default image address is already updated. There is no `SECURE_ANALYZERS_PREFIX` variable for Container Scanning.
 
     In a future release, we will stop publishing images to `registry.gitlab.com/gitlab-org/security-products/analyzers`.
-    Once this happens, you must take action if you manually pull images and push them into a separate registry. This is commonly the case for [offline deployments](https://docs.gitlab.com/ee/user/application_security/offline_deployments/index.html).
+    Once this happens, you must take action if you manually pull images and push them into a separate registry. This is commonly the case for [offline deployments](https://docs.gitlab.com/ee/user/application_security/offline_deployments/).
     Otherwise, you won't receive further updates.
 
     See the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/352564) for more details.
diff --git a/data/deprecations/15-0-instance-statistics-graphql-node-removal.yml b/data/deprecations/15-0-instance-statistics-graphql-node-removal.yml
index 3ac4e41bf7e521ab4a0fc4fb2493c96a66be47a9..e0472fe2cd850470feab9e6e997b3eb71d5810b7 100644
--- a/data/deprecations/15-0-instance-statistics-graphql-node-removal.yml
+++ b/data/deprecations/15-0-instance-statistics-graphql-node-removal.yml
@@ -8,4 +8,4 @@
   stage: Foundations
   tiers: [FREE]
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/332323
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#queryusagetrendsmeasurements
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#queryusagetrendsmeasurements
diff --git a/data/deprecations/15-3-vulnerabilityFindingDismiss-mutation.yml b/data/deprecations/15-3-vulnerabilityFindingDismiss-mutation.yml
index 176ff74fe0b9078026ec6c0b0270fc46687e5459..5ebfbf598f357fad22db130f70eda397ec246b20 100644
--- a/data/deprecations/15-3-vulnerabilityFindingDismiss-mutation.yml
+++ b/data/deprecations/15-3-vulnerabilityFindingDismiss-mutation.yml
@@ -15,6 +15,6 @@
 #
   end_of_support_milestone:  # (optional) Use "XX.YY" format. The milestone when support for this feature will end.
   tiers:  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#mutationvulnerabilityfindingdismiss
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#mutationvulnerabilityfindingdismiss
   image_url:  # (optional) This is a link to a thumbnail image depicting the feature
   video_url:  # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
diff --git a/data/deprecations/15-5-confidential-field-on-notes.yml b/data/deprecations/15-5-confidential-field-on-notes.yml
index 2165b56710be07f94ee31600416f8f1e24c31418..2e3dd79c315b430446737491aa02df79db3623a1 100644
--- a/data/deprecations/15-5-confidential-field-on-notes.yml
+++ b/data/deprecations/15-5-confidential-field-on-notes.yml
@@ -7,4 +7,4 @@
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371485
   body: |
     The `confidential` field for a `Note` will be deprecated and renamed to `internal`.
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#note
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#note
diff --git a/data/deprecations/15-5-vulnerabilityFindingDismiss-mutation.yml b/data/deprecations/15-5-vulnerabilityFindingDismiss-mutation.yml
index 2a289b4070d66a276bc451718c3b8bcb03b21563..75b057055605213aa84848f5a048b3540970136a 100644
--- a/data/deprecations/15-5-vulnerabilityFindingDismiss-mutation.yml
+++ b/data/deprecations/15-5-vulnerabilityFindingDismiss-mutation.yml
@@ -8,4 +8,4 @@
   body: |
     The `VulnerabilityFindingDismiss` GraphQL mutation is being deprecated and will be removed in GitLab 16.0. This mutation was not used often as the Vulnerability Finding ID was not available to users (this field was [deprecated in 15.3](https://docs.gitlab.com/ee/update/deprecations.html#use-of-id-field-in-vulnerabilityfindingdismiss-mutation)). Users should instead use `VulnerabilityDismiss` to dismiss vulnerabilities in the Vulnerability Report or `SecurityFindingDismiss` for security findings in the CI Pipeline Security tab.
   tiers: "Ultimate"
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#mutationvulnerabilityfindingdismiss
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#mutationvulnerabilityfindingdismiss
diff --git a/data/deprecations/15-7-deprecate-api-v4-runner-registration-token-reset-endpoints.yml b/data/deprecations/15-7-deprecate-api-v4-runner-registration-token-reset-endpoints.yml
index b8d3fbbcfb0f1e164378bf5a28f9f7bd16c6ed46..2ff1b1f690c5077d15f4e8d4a5b09fdd291b8cce 100644
--- a/data/deprecations/15-7-deprecate-api-v4-runner-registration-token-reset-endpoints.yml
+++ b/data/deprecations/15-7-deprecate-api-v4-runner-registration-token-reset-endpoints.yml
@@ -24,7 +24,7 @@
     as part of the new [GitLab Runner token architecture](https://docs.gitlab.com/ee/ci/runners/new_creation_workflow.html).
     The work is planned in [this epic](https://gitlab.com/groups/gitlab-org/-/epics/7633).
     This new architecture introduces a new method for registering runners and will eliminate the legacy
-    [runner registration token](https://docs.gitlab.com/ee/security/tokens/index.html#runner-registration-tokens-deprecated).
+    [runner registration token](https://docs.gitlab.com/ee/security/tokens/#runner-registration-tokens-deprecated).
     From GitLab 18.0 and later, the runner registration methods implemented by the new GitLab Runner token architecture will be the only supported methods.
   end_of_support_milestone:  # (optional) Use "XX.YY" format. The milestone when support for this feature will end.
   tiers:  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
diff --git a/data/deprecations/15-7-deprecate-kas-metrics-port-in-gitlab-chart.yml b/data/deprecations/15-7-deprecate-kas-metrics-port-in-gitlab-chart.yml
index 64ec200f2072dd53e32c1bc5c30e95d9270f5001..5752182eb4d641b1af667ee36480f4a03823a704 100644
--- a/data/deprecations/15-7-deprecate-kas-metrics-port-in-gitlab-chart.yml
+++ b/data/deprecations/15-7-deprecate-kas-metrics-port-in-gitlab-chart.yml
@@ -14,6 +14,6 @@
   # OTHER OPTIONAL FIELDS
   #
   tiers: [Core, Premium, Ultimate]  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
-  documentation_url: https://docs.gitlab.com/charts/charts/gitlab/kas/index.html  # (optional) This is a link to the current documentation page
+  documentation_url: https://docs.gitlab.com/charts/charts/gitlab/kas/  # (optional) This is a link to the current documentation page
   image_url:  # (optional) This is a link to a thumbnail image depicting the feature
   video_url:  # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
diff --git a/data/deprecations/15-8-kas-private-tls.yml b/data/deprecations/15-8-kas-private-tls.yml
index bc3114f5d86eb5062f26b974da157d823b87ad66..33afdd240e16871672d7ee96c85bc9f6bccdde60 100644
--- a/data/deprecations/15-8-kas-private-tls.yml
+++ b/data/deprecations/15-8-kas-private-tls.yml
@@ -12,5 +12,5 @@
     Because the new values provide a streamlined, comprehensive method to enable TLS for KAS, you should use `global.kas.tls.*` instead of `gitlab.kas.privateApi.tls.*`. The `gitlab.kas.privateApi.tls.*` For more information, see:
 
     - The [merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/2888) that introduces the `global.kas.tls.*` values.
-    - The [deprecated `gitlab.kas.privateApi.tls.*` documentation](https://docs.gitlab.com/charts/charts/gitlab/kas/index.html#enable-tls-communication-through-the-gitlabkasprivateapi-attributes-deprecated).
+    - The [deprecated `gitlab.kas.privateApi.tls.*` documentation](https://docs.gitlab.com/charts/charts/gitlab/kas/#enable-tls-communication-through-the-gitlabkasprivateapi-attributes-deprecated).
     - The [new `global.kas.tls.*` documentation](https://docs.gitlab.com/charts/charts/globals.html#tls-settings-1).
diff --git a/data/deprecations/15-9-JWT-OIDC.yml b/data/deprecations/15-9-JWT-OIDC.yml
index b97253e9fd03fb1ffd63b64aa8bb875eda0a3291..6ef42d01acd8c6faca2cfeaf48d1edf6f1d29b2e 100644
--- a/data/deprecations/15-9-JWT-OIDC.yml
+++ b/data/deprecations/15-9-JWT-OIDC.yml
@@ -17,7 +17,7 @@
     - `CI_JOB_JWT_V1`
     - `CI_JOB_JWT_V2`
 
-    To prepare for this change, configure your pipelines to use [ID tokens](https://docs.gitlab.com/ee/ci/yaml/index.html#id_tokens)
+    To prepare for this change, configure your pipelines to use [ID tokens](https://docs.gitlab.com/ee/ci/yaml/#id_tokens)
     instead of the deprecated tokens. For OIDC compliance, the `iss` claim now uses
     the fully qualified domain name, for example `https://example.com`, previously
     introduced with the `CI_JOB_JWT_V2` token.
diff --git a/data/deprecations/15-9-ci-builds-column-validations.yml b/data/deprecations/15-9-ci-builds-column-validations.yml
index 5de68571a701c3504704f84f559b1c3abcccf28b..07f78caff432bb83f6b12798f7e58b0aa407eba7 100644
--- a/data/deprecations/15-9-ci-builds-column-validations.yml
+++ b/data/deprecations/15-9-ci-builds-column-validations.yml
@@ -11,7 +11,7 @@
   stage: Verify  # (required) String value of the stage that the feature was created in. e.g., Growth
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372770  # (required) Link to the deprecation issue in GitLab
   body: |  # (required) Do not modify this line, instead modify the lines below.
-    While CI/CD [job names](https://docs.gitlab.com/ee/ci/jobs/index.html#job-name) have a strict 255 character limit, other CI/CD parameters do not yet have validations ensuring they also stay under the limit.
+    While CI/CD [job names](https://docs.gitlab.com/ee/ci/jobs/#job-name) have a strict 255 character limit, other CI/CD parameters do not yet have validations ensuring they also stay under the limit.
 
     In GitLab 16.0, validation will be added to strictly limit the following to 255 characters as well:
 
diff --git a/data/deprecations/15-9-deprecate-external-field-in-graphql-release-asset-link.yml b/data/deprecations/15-9-deprecate-external-field-in-graphql-release-asset-link.yml
index 1ee097e02223230857ea35e333f4d6c9b489f938..26ba882b67109733698b79d93d06e6cfc7854050 100644
--- a/data/deprecations/15-9-deprecate-external-field-in-graphql-release-asset-link.yml
+++ b/data/deprecations/15-9-deprecate-external-field-in-graphql-release-asset-link.yml
@@ -6,7 +6,7 @@
   breaking_change: true
   reporter: ahmed.hemdan
   body: |
-    In the [GraphQL API](https://docs.gitlab.com/ee/api/graphql/), the `external` field of [`ReleaseAssetLink` type](https://docs.gitlab.com/ee/api/graphql/reference/index.html#releaseassetlink) was used to indicate whether a [release link](https://docs.gitlab.com/ee/user/project/releases/release_fields.html#links) is internal or external to your GitLab instance.
+    In the [GraphQL API](https://docs.gitlab.com/ee/api/graphql/), the `external` field of [`ReleaseAssetLink` type](https://docs.gitlab.com/ee/api/graphql/reference/#releaseassetlink) was used to indicate whether a [release link](https://docs.gitlab.com/ee/user/project/releases/release_fields.html#links) is internal or external to your GitLab instance.
     As of GitLab 15.9, we treat all release links as external, and therefore, this field is deprecated in GitLab 15.9, and will be removed in GitLab 16.0.
     To avoid any disruptions to your workflow, please stop using the `external` field because it will be removed and will not be replaced.
   stage: Release
diff --git a/data/deprecations/16-0-CiRunner-projects-default-sort.yml b/data/deprecations/16-0-CiRunner-projects-default-sort.yml
index d462afb757b734321b8ad2ee3cdca4f376a0c406..54f1427aaf711e37f8e9d00fe4c1d0a439038ab1 100644
--- a/data/deprecations/16-0-CiRunner-projects-default-sort.yml
+++ b/data/deprecations/16-0-CiRunner-projects-default-sort.yml
@@ -22,6 +22,6 @@
   # OTHER OPTIONAL FIELDS
   #
   tiers:  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#cirunnerprojects  # (optional) This is a link to the current documentation page
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#cirunnerprojects  # (optional) This is a link to the current documentation page
   image_url:  # (optional) This is a link to a thumbnail image depicting the feature
   video_url:  # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
diff --git a/data/deprecations/16-0-graphql-RunnerMembershipFilter-renamed.yml b/data/deprecations/16-0-graphql-RunnerMembershipFilter-renamed.yml
index 67148c698e456d64195f73bf14cbcb5826d93fe9..b0b87814b291c86a47b21a52efee17cc4099a6fc 100644
--- a/data/deprecations/16-0-graphql-RunnerMembershipFilter-renamed.yml
+++ b/data/deprecations/16-0-graphql-RunnerMembershipFilter-renamed.yml
@@ -19,6 +19,6 @@
   # OTHER OPTIONAL FIELDS
   #
   tiers:  # (optional - may be required in the future) An array of tiers that the feature is available in currently.  e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#cirunnermembershipfilter  # (optional) This is a link to the current documentation page
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#cirunnermembershipfilter  # (optional) This is a link to the current documentation page
   image_url:  # (optional) This is a link to a thumbnail image depicting the feature
   video_url:  # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
diff --git a/data/deprecations/16-3-runner-terminationgracepriodseconds.yml b/data/deprecations/16-3-runner-terminationgracepriodseconds.yml
index 505498700ec99513ac97c52ab379ee25b38e87b1..10940873b6bacada22f8e48b9372b3bb6305b3a8 100644
--- a/data/deprecations/16-3-runner-terminationgracepriodseconds.yml
+++ b/data/deprecations/16-3-runner-terminationgracepriodseconds.yml
@@ -6,7 +6,7 @@
   stage: stage  # (required) String value of the stage that the feature was created in. e.g., Growth
   issue_url: "https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28165"  # (required) Link to the deprecation issue in GitLab
   body: |  # (required) Do not modify this line, instead modify the lines below.
-    The GitLab Runner Kubernetes executor setting, `terminationGracePeriodSeconds`, is deprecated and will be removed in GitLab 17.0. To manage the cleanup and termination of GitLab Runner worker pods on Kubernetes, customers should instead configure `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`. For information about how to use the `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`, see the [GitLab Runner Executor documentation](https://docs.gitlab.com/runner/executors/kubernetes/index.html#other-configtoml-settings).
+    The GitLab Runner Kubernetes executor setting, `terminationGracePeriodSeconds`, is deprecated and will be removed in GitLab 17.0. To manage the cleanup and termination of GitLab Runner worker pods on Kubernetes, customers should instead configure `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`. For information about how to use the `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`, see the [GitLab Runner Executor documentation](https://docs.gitlab.com/runner/executors/kubernetes/#other-configtoml-settings).
 
 #
 # OPTIONAL END OF SUPPORT FIELDS
diff --git a/data/deprecations/16-5-offset-pagination.yml b/data/deprecations/16-5-offset-pagination.yml
index 96b69f81f86fcb864540fd80a0a2eaff0eb8dfdb..297ce610fe16c9c63618db3ffd853ef45c66153f 100644
--- a/data/deprecations/16-5-offset-pagination.yml
+++ b/data/deprecations/16-5-offset-pagination.yml
@@ -6,4 +6,4 @@
   stage: govern  # (required) String value of the stage that the feature was created in. e.g., Growth
   issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/426547  # (required) Link to the deprecation issue in GitLab
   body: |  # (required) Do not modify this line, instead modify the lines below.
-    Offset pagination for the `/users` REST API is deprecated in GitLab 16.5, and will be removed in GitLab 17.0. Use [keyset pagination](https://docs.gitlab.com/ee/api/rest/index.html#keyset-based-pagination) instead.
+    Offset pagination for the `/users` REST API is deprecated in GitLab 16.5, and will be removed in GitLab 17.0. Use [keyset pagination](https://docs.gitlab.com/ee/api/rest/#keyset-based-pagination) instead.
diff --git a/data/deprecations/17-4-secure-container-registries.yml b/data/deprecations/17-4-secure-container-registries.yml
index 3f1256825bdf678cb32a3fffdee32d490ed681ef..83766a7ac1f5b61faa3fd2773d4731eaa4e0d535 100644
--- a/data/deprecations/17-4-secure-container-registries.yml
+++ b/data/deprecations/17-4-secure-container-registries.yml
@@ -26,4 +26,4 @@
     Offline deployments should review the [specific scanner instructions](https://docs.gitlab.com/ee/user/application_security/offline_deployments/#specific-scanner-instructions)
     to ensure the correct locations are being used to mirror the required scanner images.
   tiers: [Free, Premium, Ultimate]
-  documentation_url: https://docs.gitlab.com/ee/user/application_security/index.html#vulnerability-scanner-maintenance
+  documentation_url: https://docs.gitlab.com/ee/user/application_security/#vulnerability-scanner-maintenance
diff --git a/data/deprecations/17-7-RunnersRegistrationTokenReset-mutation.yml b/data/deprecations/17-7-RunnersRegistrationTokenReset-mutation.yml
index 93c25e56805b0bdc8b9bfa108ebc4925b96ff3bd..1de5893f5f9da674d47b88ba0a2bbbf69c081be7 100644
--- a/data/deprecations/17-7-RunnersRegistrationTokenReset-mutation.yml
+++ b/data/deprecations/17-7-RunnersRegistrationTokenReset-mutation.yml
@@ -20,7 +20,7 @@
     as part of the new [GitLab Runner token architecture](https://docs.gitlab.com/ee/ci/runners/new_creation_workflow.html).
     For details, see [epic 7633](https://gitlab.com/groups/gitlab-org/-/epics/7633).
     This new architecture introduces a new method for registering runners and eliminates the legacy
-    [runner registration token](https://docs.gitlab.com/ee/security/tokens/index.html#runner-registration-tokens-deprecated).
+    [runner registration token](https://docs.gitlab.com/ee/security/tokens/#runner-registration-tokens-deprecated).
     In GitLab 18.0, only the runner registration methods implemented in the new GitLab Runner token architecture will be supported.
 #
   # When support for this feature ends, in XX.YY milestone format.
diff --git a/data/deprecations/17-7-deprecate-SPPgraphqlmutation.yml b/data/deprecations/17-7-deprecate-SPPgraphqlmutation.yml
index 56827f17e0dba99eee33712af59f52064b79350e..4e85b1a0801803eebc54ac6ea8862f642b679dfb 100644
--- a/data/deprecations/17-7-deprecate-SPPgraphqlmutation.yml
+++ b/data/deprecations/17-7-deprecate-SPPgraphqlmutation.yml
@@ -17,4 +17,4 @@
     - Stop using the old mutation name `setPreReceiveSecretDetection`. Instead, use the name `setSecretPushProtection`.
     - Change any references to the field `pre_receive_secret_detection_enabled` to `secret_push_protection_enabled`.
 
-  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#mutationsetsecretpushprotection
+  documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/#mutationsetsecretpushprotection
diff --git a/data/deprecations/17-9-remove-duoProAssignedUsersCount-graphql-field.yml b/data/deprecations/17-9-remove-duoProAssignedUsersCount-graphql-field.yml
index 05fdf16f0ceeb20c259b7a87f9e78194084475a5..27cb57235f819c9cad7f2a77cb9d1695df08a260 100644
--- a/data/deprecations/17-9-remove-duoProAssignedUsersCount-graphql-field.yml
+++ b/data/deprecations/17-9-remove-duoProAssignedUsersCount-graphql-field.yml
@@ -12,5 +12,5 @@
   resolution_role: Admin # Can be one of: [Admin, Owner, Maintainer, Developer]
   manual_task: false # Can be true or false. Use this to denote whether a resolution action must be performed manually (true), or if it can be automated by using the API or other automation (false).
   body: |  # (required) Don't change this line.
-    In 18.0 we are removing the `duoProAssignedUsersCount` GraphQL field. Users may experience issues if they are using this field with the [`aiMetrics` API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#aimetrics), and instead they can use the `duoAssignedUsersCount`. This removal is part of the [fix to count both GitLab Duo Pro and Duo seats assigned users](https://gitlab.com/gitlab-org/gitlab/-/issues/485510).
+    In 18.0 we are removing the `duoProAssignedUsersCount` GraphQL field. Users may experience issues if they are using this field with the [`aiMetrics` API](https://docs.gitlab.com/ee/api/graphql/reference/#aimetrics), and instead they can use the `duoAssignedUsersCount`. This removal is part of the [fix to count both GitLab Duo Pro and Duo seats assigned users](https://gitlab.com/gitlab-org/gitlab/-/issues/485510).
   tiers: ultimate
diff --git a/data/deprecations/templates/_deprecation_template.md.erb b/data/deprecations/templates/_deprecation_template.md.erb
index 3a490ab7cfd0b1dcf2e0af13e79eb7c4cba5f839..d39e84ee226882f16ef250616d95e9d8a969f2ff 100644
--- a/data/deprecations/templates/_deprecation_template.md.erb
+++ b/data/deprecations/templates/_deprecation_template.md.erb
@@ -13,7 +13,7 @@ The following GitLab features are deprecated and no longer recommended for use.
 - Some features cause breaking changes when they are removed.
 - On GitLab.com, deprecated features can be removed at any time during the month leading up to the release.
 - To view documentation for a removed feature, see the [GitLab Docs archive](https://docs.gitlab.com/archives/).
-- For GraphQL API deprecations, you should [verify your API calls work without the deprecated items](https://docs.gitlab.com/ee/api/graphql/index.html#verify-against-the-future-breaking-change-schema).
+- For GraphQL API deprecations, you should [verify your API calls work without the deprecated items](https://docs.gitlab.com/ee/api/graphql/#verify-against-the-future-breaking-change-schema).
 
 For advanced searching and filtering of this deprecation information, try
 [a tool built by our Customer Success team](https://gitlab-com.gitlab.io/cs-tools/gitlab-cs-tools/what-is-new-since/?tab=deprecations).
diff --git a/data/whats_new/202008180001_12_10.yml b/data/whats_new/202008180001_12_10.yml
index da1a89c4d10434f6a398923c11e78c3dc1a1d66d..d6cffd6c8b4c2a1d6241a30424616b2cca8e678f 100644
--- a/data/whats_new/202008180001_12_10.yml
+++ b/data/whats_new/202008180001_12_10.yml
@@ -8,7 +8,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/project/requirements/index.html
+  documentation_link: https://docs.gitlab.com/ee/user/project/requirements/
   image_url: https://docs.gitlab.com/ee/user/project/requirements/img/requirements_list_v13_5.png
   published_at: 2020-04-22
   release: 12.10
@@ -21,7 +21,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/index.html
+  documentation_link: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/
   image_url: https://about.gitlab.com/images/12_10/jwt-vault-1.png
   published_at: 2020-04-22
   release: 12.10
@@ -36,7 +36,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/project/issues/index.html#health-status
+  documentation_link: https://docs.gitlab.com/ee/user/project/issues/#health-status
   image_url: https://about.gitlab.com/images/12_10/epic-health-status.png
   published_at: 2020-04-22
   release: 12.10
diff --git a/data/whats_new/202008180002_13_0.yml b/data/whats_new/202008180002_13_0.yml
index 930c4245ea5c53d574434bb471a2293f2d60f292..7b6fb8aa09094254d8ff726ef18b69dd0c9d2a9e 100644
--- a/data/whats_new/202008180002_13_0.yml
+++ b/data/whats_new/202008180002_13_0.yml
@@ -21,7 +21,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/topics/autodevops/index.html#aws-ecs
+  documentation_link: https://docs.gitlab.com/ee/topics/autodevops/#aws-ecs
   image_url: https://docs.gitlab.com/ee/ci/img/ecs_dashboard_v12_9.png
   published_at: 2020-05-22
   release: 13.0
diff --git a/data/whats_new/202008180003_13_01.yml b/data/whats_new/202008180003_13_01.yml
index d3ae61e3be501f4d6f74d6eaa88e57b0a1b4f09b..bbabbe17a60bc734eb0405146fa7a0dff51966aa 100644
--- a/data/whats_new/202008180003_13_01.yml
+++ b/data/whats_new/202008180003_13_01.yml
@@ -8,7 +8,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/operations/incident_management/index.html
+  documentation_link: https://docs.gitlab.com/ee/operations/incident_management/
   image_url: https://about.gitlab.com/images/13_1/alert_management.png
   published_at: 2020-06-22
   release: 13.1
@@ -43,7 +43,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/discussions/index.html#merge-request-reviews
+  documentation_link: https://docs.gitlab.com/ee/user/discussions/#merge-request-reviews
   image_url: https://about.gitlab.com/images/13_1/batch_comments.png
   published_at: 2020-06-22
   release: 13.1
diff --git a/data/whats_new/202010230001_13_05.yml b/data/whats_new/202010230001_13_05.yml
index bf5b0a688b79b57c9f348a2b3b896fd69cddb234..5eeb525cdb113fe14394928b745bde167a1d12d9 100644
--- a/data/whats_new/202010230001_13_05.yml
+++ b/data/whats_new/202010230001_13_05.yml
@@ -12,7 +12,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/project/wiki/index.html
+  documentation_link: https://docs.gitlab.com/ee/user/project/wiki/
   image_url: https://about.gitlab.com/images/13_5/cdybenko-group-wiki.png
   published_at: 2020-10-22
   release: 13.5
@@ -53,7 +53,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/runners/index.html#disable-shared-runners
+  documentation_link: https://docs.gitlab.com/ee/ci/runners/#disable-shared-runners
   image_url: https://about.gitlab.com/images/13_5/enable_shared_runners_v2.png
   published_at: 2020-10-22
   release: 13.5
diff --git a/data/whats_new/202011230001_13_06.yml b/data/whats_new/202011230001_13_06.yml
index d5c3ebc9696e0e624d4301d37a0ca67839fbd0ce..d5c6ef938dd979d3948ce4504b940e6ab7f0999d 100644
--- a/data/whats_new/202011230001_13_06.yml
+++ b/data/whats_new/202011230001_13_06.yml
@@ -40,7 +40,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/group/repositories_analytics/index.html#latest-project-test-coverage-list
+  documentation_link: https://docs.gitlab.com/ee/user/group/repositories_analytics/#latest-project-test-coverage-list
   image_url: https://about.gitlab.com/images/13_6/display_selected_coverage_projects_example.png
   published_at: 2020-11-22
   release: 13.6
diff --git a/data/whats_new/202101140001_13_08.yml b/data/whats_new/202101140001_13_08.yml
index 084d09a18e4529eebdac13788c3640a8f1ebb525..bb50514543b1acee3d1d93a5d032ce9832358da5 100644
--- a/data/whats_new/202101140001_13_08.yml
+++ b/data/whats_new/202101140001_13_08.yml
@@ -8,7 +8,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/pipeline_editor/index.html
+  documentation_link: https://docs.gitlab.com/ee/ci/pipeline_editor/
   image_url: https://img.youtube.com/vi/MQpSyvMpsHA/hqdefault.jpg
   published_at: 2021-01-22
   release: 13.8
@@ -76,7 +76,7 @@
   self-managed: true
   gitlab-com: false
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/charts/charts/gitlab/gitlab-pages/index.html
+  documentation_link: https://docs.gitlab.com/charts/charts/gitlab/gitlab-pages/
   image_url: https://about.gitlab.com/images/home/kubernetes.png
   published_at: 2021-01-22
   release: 13.8
diff --git a/data/whats_new/202102180001_13_09.yml b/data/whats_new/202102180001_13_09.yml
index b46a79ee1f2a02091c6f99c82db7d8f3582d476a..a2fca8e8f7f41467a6a8e7e907c6a38d35cdd647 100644
--- a/data/whats_new/202102180001_13_09.yml
+++ b/data/whats_new/202102180001_13_09.yml
@@ -7,7 +7,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/yaml/index.html#reference-tags
+  documentation_link: https://docs.gitlab.com/ee/ci/yaml/#reference-tags
   image_url: https://about.gitlab.com/images/13_9/reference.png
   published_at: 2021-02-22
   release: 13.9
@@ -31,7 +31,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/index.html
+  documentation_link: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/
   image_url: https://about.gitlab.com/images/icons/get-a-license.svg
   published_at: 2021-02-22
   release: 13.9
@@ -74,14 +74,14 @@
   description: |
     Systems administrators occasionally perform maintenance operations on their GitLab instance to keep it performing optimally. Administrators want to offer the highest level of access to their users while these operations are taking place. For example, you may want to perform a [failover test to a secondary site](https://docs.gitlab.com/ee/administration/geo/disaster_recovery/planned_failover.html) as part of the company's business continuity plan. Prior to the failover, you want to pause changes for a short period to ensure the secondary is fully synchronized. Until GitLab 13.8, you could [restrict users from logging in](https://docs.gitlab.com/omnibus/maintenance/#restrict-users-from-logging-into-gitlab), but this would block the entire UI and would render GitLab inaccessible to users.
 
-    GitLab 13.9 introduces [maintenance mode](https://docs.gitlab.com/ee/administration/maintenance_mode/index.html), where write operations are disabled at the application level. This means that GitLab is effectively in a read-only state for all non-administrative users (administrators are still able to edit application settings and [background jobs continue](https://docs.gitlab.com/ee/administration/maintenance_mode/index.html#background-jobs)). Regular users are able to log in to GitLab, view the interface and perform other read-only operations, such as `git clone` or `git pull`. Using maintenance mode, systems administrators can perform maintenance operations, such as failing over to a secondary site, with minimal disruption to regular users.
+    GitLab 13.9 introduces [maintenance mode](https://docs.gitlab.com/ee/administration/maintenance_mode/), where write operations are disabled at the application level. This means that GitLab is effectively in a read-only state for all non-administrative users (administrators are still able to edit application settings and [background jobs continue](https://docs.gitlab.com/ee/administration/maintenance_mode/#background-jobs)). Regular users are able to log in to GitLab, view the interface and perform other read-only operations, such as `git clone` or `git pull`. Using maintenance mode, systems administrators can perform maintenance operations, such as failing over to a secondary site, with minimal disruption to regular users.
 
     Note that GitLab already [supports zero-downtime updates](https://docs.gitlab.com/omnibus/update/#zero-downtime-updates) and enabling maintenance mode is not required to keep your instance up-to-date.
   stage: Enablement
   self-managed: true
   gitlab-com: false
   available_in: [Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/administration/maintenance_mode/index.html
+  documentation_link: https://docs.gitlab.com/ee/administration/maintenance_mode/
   image_url: https://about.gitlab.com/images/13_9/maintenance_mode.png
   published_at: 2021-02-22
   release: 13.9
diff --git a/data/whats_new/202104220001_13_11.yml b/data/whats_new/202104220001_13_11.yml
index aec42ed1e9fb379c3fb39c5c7be191163304afea..1e644709d488d96f2f982feba515988c4a3a7c52 100644
--- a/data/whats_new/202104220001_13_11.yml
+++ b/data/whats_new/202104220001_13_11.yml
@@ -48,7 +48,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/yaml/index.html#multiple-caches
+  documentation_link: https://docs.gitlab.com/ee/ci/yaml/#multiple-caches
   image_url: https://about.gitlab.com/images/13_11/cache.png
   published_at: 2021-04-22
   release: 13.11
diff --git a/data/whats_new/202105220001_13_12.yml b/data/whats_new/202105220001_13_12.yml
index 46a38b87d11428b702b8da3713646f537278365a..da460e66120981dd9d30e7429f083878a70870c3 100644
--- a/data/whats_new/202105220001_13_12.yml
+++ b/data/whats_new/202105220001_13_12.yml
@@ -35,7 +35,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/yaml/index.html#artifactsexpire_in
+  documentation_link: https://docs.gitlab.com/ee/ci/yaml/#artifactsexpire_in
   image_url: https://about.gitlab.com/images/growth/verify.png
   published_at: 2021-05-22
   release: 13.12
@@ -56,7 +56,7 @@
   release: 13.12
 - name: Configuration tool for Secret Detection
   description: |
-    Following in the footsteps of the [GitLab SAST configuration tool](https://docs.gitlab.com/ee/user/application_security/sast/index.html#configure-sast-in-the-ui) we are adding support for Secret Detection on the Security Configuration page. We believe that [security is a team effort](https://about.gitlab.com/direction/secure/#security-is-a-team-effort) and this configuration experience makes it easier for non-CI experts to get started with [GitLab Secret Detection](https://docs.gitlab.com/ee/user/application_security/secret_detection/). The tool helps a user create a merge request to enable Secret Detection scanning while leveraging best configuration practices like using the GitLab-managed [`SAST.gitlab-ci.yml` template](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml). The Configuration tool can create a new `.gitlab-ci.yml` file if one does not exist or update existing simple GitLab CI files, allowing the tool to be used with projects that already have GitLab CI setup.
+    Following in the footsteps of the [GitLab SAST configuration tool](https://docs.gitlab.com/ee/user/application_security/sast/#configure-sast-in-the-ui) we are adding support for Secret Detection on the Security Configuration page. We believe that [security is a team effort](https://about.gitlab.com/direction/secure/#security-is-a-team-effort) and this configuration experience makes it easier for non-CI experts to get started with [GitLab Secret Detection](https://docs.gitlab.com/ee/user/application_security/secret_detection/). The tool helps a user create a merge request to enable Secret Detection scanning while leveraging best configuration practices like using the GitLab-managed [`SAST.gitlab-ci.yml` template](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Security/SAST.gitlab-ci.yml). The Configuration tool can create a new `.gitlab-ci.yml` file if one does not exist or update existing simple GitLab CI files, allowing the tool to be used with projects that already have GitLab CI setup.
   stage: secure
   self-managed: true
   gitlab-com: true
diff --git a/data/whats_new/202106220001_14_0.yml b/data/whats_new/202106220001_14_0.yml
index ff041565f13fc9824effc149c05b8af1b1d6912a..8682c11f69fcc4d7bfc697c4e53bda7a8e62004f 100644
--- a/data/whats_new/202106220001_14_0.yml
+++ b/data/whats_new/202106220001_14_0.yml
@@ -124,7 +124,7 @@
   release: 14.0
 - name: Change an issue's type
   description: |
-    In some cases, you may wish to change an issue's type. For example, you may want to escalate an issue to an [incident](https://docs.gitlab.com/ee/operations/incident_management/index.html) to ensure that your team handles the problem properly. To change an issue's type, edit the issue and select an issue type from the **Issue type** selector menu.
+    In some cases, you may wish to change an issue's type. For example, you may want to escalate an issue to an [incident](https://docs.gitlab.com/ee/operations/incident_management/) to ensure that your team handles the problem properly. To change an issue's type, edit the issue and select an issue type from the **Issue type** selector menu.
   stage: Monitor
   self-managed: true
   gitlab-com: true
@@ -150,12 +150,12 @@
   description: |
     Terraform modules play a central role in building standard infrastructure components throughout an organization. Up to GitLab 13.12, GitLab users had to use either a third-party Terraform module registry, local modules, or Git-based modules. While these options work well, they do not help with the distribution of the modules and they lack proper versioning support, which introduces risks for module users. GitLab 14.0 extends our [Infrastructure-as-Code offerings](https://docs.gitlab.com/ee/user/infrastructure/) with a Terraform module registry. Now, you can use the Terraform module registry built into GitLab to discover Terraform modules with semantic versioning support for upgrades and maintenance. Moreover, you can publish modules easily using GitLab CI/CD.
 
-    While following Terraform's best practices, we recommend developing each Terraform module in a dedicated GitLab project. To simplify the transition to the registry, users can host and publish multiple modules from a single GitLab repository. You can learn more about publishing and consuming a new module [in our documentation](https://docs.gitlab.com/ee/user/packages/terraform_module_registry/index.html).
+    While following Terraform's best practices, we recommend developing each Terraform module in a dedicated GitLab project. To simplify the transition to the registry, users can host and publish multiple modules from a single GitLab repository. You can learn more about publishing and consuming a new module [in our documentation](https://docs.gitlab.com/ee/user/packages/terraform_module_registry/).
   stage: Configure
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/packages/terraform_module_registry/index.html
+  documentation_link: https://docs.gitlab.com/ee/user/packages/terraform_module_registry/
   image_url: https://about.gitlab.com/images/14_0/terraform-module-registry.png
   published_at: 2021-06-22
   release: 14.0
diff --git a/data/whats_new/202107220001_14_1.yml b/data/whats_new/202107220001_14_1.yml
index e9935d85ba1b6e253f988749e2f0f10e336bc2a8..ab042c4eb33f18a92286dfa7e79f8e079e0565a4 100644
--- a/data/whats_new/202107220001_14_1.yml
+++ b/data/whats_new/202107220001_14_1.yml
@@ -12,7 +12,7 @@
 - name: Track use of security scanning across multiple teams
   description: |
    Track which groups across your organization have enabled SAST and DAST scanning. This is helpful for verifying compliance with organizational requirements, responding to audit requests, and tracking progress on company initiatives to make applications more secure. To track adoption, go to the **Sec** tab in DevOps Adoption either at the group level or instance level.
-   To see groups that have enabled fuzz testing and dependency scanning, use [the DevOps API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#devopsadoptionsnapshot). Fuzz testing and dependency scanning will be added to the DevOps Adoption UI in an upcoming release.
+   To see groups that have enabled fuzz testing and dependency scanning, use [the DevOps API](https://docs.gitlab.com/ee/api/graphql/reference/#devopsadoptionsnapshot). Fuzz testing and dependency scanning will be added to the DevOps Adoption UI in an upcoming release.
   stage: Foundations
   self-managed: true
   gitlab-com: true
@@ -53,12 +53,12 @@
   release: 14.1
 - name: Registration Features
   description: |
-   [Registration Features](https://docs.gitlab.com/ee/development/service_ping/index.html#registration-features-program) introduces the ability for free, self-managed users running GitLab EE to access paid features by registering with GitLab and sharing activity data via [Service Ping](https://docs.gitlab.com/ee/development/service_ping/index.html#what-is-service-ping). The first feature introduced is [email from GitLab](https://docs.gitlab.com/ee/tools/email.html), enabling instance administrators to email users within their instance.
+   [Registration Features](https://docs.gitlab.com/ee/development/service_ping/#registration-features-program) introduces the ability for free, self-managed users running GitLab EE to access paid features by registering with GitLab and sharing activity data via [Service Ping](https://docs.gitlab.com/ee/development/service_ping/#what-is-service-ping). The first feature introduced is [email from GitLab](https://docs.gitlab.com/ee/tools/email.html), enabling instance administrators to email users within their instance.
   stage: Growth
   self-managed: true
   gitlab-com: false
   available_in: [Free]
-  documentation_link: 'https://docs.gitlab.com/ee/development/service_ping/index.html#registration-features-program'
+  documentation_link: 'https://docs.gitlab.com/ee/development/service_ping/#registration-features-program'
   image_url: https://about.gitlab.com/images/14_1/registration-features.png
   published_at: 2021-07-22
   release: 14.1
diff --git a/data/whats_new/202108190001_14_02.yml b/data/whats_new/202108190001_14_02.yml
index 5dd81f0672a897704a53b40a932d1abbf445698b..53a1fefdbe5074b72502c54cba154e069ab4cfa7 100644
--- a/data/whats_new/202108190001_14_02.yml
+++ b/data/whats_new/202108190001_14_02.yml
@@ -18,7 +18,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/subscriptions/gitlab_com/index.html#ci-pipeline-minutes'
+  documentation_link: 'https://docs.gitlab.com/ee/subscriptions/gitlab_com/#ci-pipeline-minutes'
   image_url: https://about.gitlab.com/images/14_2/CI_minutes_usage_graph.png
   published_at: 2021-08-22
   release: 14.2
diff --git a/data/whats_new/202109200001_14_03.yml b/data/whats_new/202109200001_14_03.yml
index 53a3156e95d8130e6639a6fce20ae1f43355b6bb..00eaad9fd399c684cac4000aa3faf5f75a9d7781 100644
--- a/data/whats_new/202109200001_14_03.yml
+++ b/data/whats_new/202109200001_14_03.yml
@@ -24,7 +24,7 @@
   release: 14.3
 - name: Group-level permissions for Protected Environments
   description: |
-      In this release, we are introducing group-level protected environments, based on the [deployment tier](https://docs.gitlab.com/ee/ci/environments/index.html#deployment-tier-of-environments) as the identifier. This enables operators to responsibly lock down deployments to higher tier environments without unnecessarily preventing developers from doing their work as the maintainers of their individual projects.
+      In this release, we are introducing group-level protected environments, based on the [deployment tier](https://docs.gitlab.com/ee/ci/environments/#deployment-tier-of-environments) as the identifier. This enables operators to responsibly lock down deployments to higher tier environments without unnecessarily preventing developers from doing their work as the maintainers of their individual projects.
   stage: Release
   self-managed: true
   gitlab-com: true
@@ -59,9 +59,9 @@
   release: 14.3
 - name: Add GitLab CI/CD configuration conditionally with `include`
   description: |
-       [`include`](https://docs.gitlab.com/ee/ci/yaml/index.html#include) is one of the most popular keywords to use when writing a full CI/CD pipeline. If you are building larger pipelines, you are probably using the `include` keyword to bring external YAML configuration into your pipeline.
+       [`include`](https://docs.gitlab.com/ee/ci/yaml/#include) is one of the most popular keywords to use when writing a full CI/CD pipeline. If you are building larger pipelines, you are probably using the `include` keyword to bring external YAML configuration into your pipeline.
 
-        In this release, we are expanding the power of the keyword so you can use `include` with [`rules`](https://docs.gitlab.com/ee/ci/yaml/index.html#include) conditions. Now, you can decide when external CI/CD configuration should or shouldn't be included. This will help you write a standardized pipeline with the ability to dynamically modify itself based on the conditions you choose.
+        In this release, we are expanding the power of the keyword so you can use `include` with [`rules`](https://docs.gitlab.com/ee/ci/yaml/#include) conditions. Now, you can decide when external CI/CD configuration should or shouldn't be included. This will help you write a standardized pipeline with the ability to dynamically modify itself based on the conditions you choose.
   stage: Verify
   self-managed: true
   gitlab-com: true
diff --git a/data/whats_new/2021102000001_14_04.yml b/data/whats_new/2021102000001_14_04.yml
index c09c3ac62e551bf4e78233daa3edda4ba905c8d5..b56f77fb0b27189cf2241e0784165afa3b074fde 100644
--- a/data/whats_new/2021102000001_14_04.yml
+++ b/data/whats_new/2021102000001_14_04.yml
@@ -5,7 +5,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/user/application_security/dast/index.html#schedule-an-on-demand-scan'
+  documentation_link: 'https://docs.gitlab.com/ee/user/application_security/dast/#schedule-an-on-demand-scan'
   image_url: https://about.gitlab.com/images/14_4/dast_on_demand_schedule.png
   published_at: 2021-10-22
   release: 14.4
diff --git a/data/whats_new/2021111800001_14_05.yml b/data/whats_new/2021111800001_14_05.yml
index d85d572208808a84616b921d8f03dbb5822c499f..0308b08a512d7afad4f8f161c6c08c6fb9e66617 100644
--- a/data/whats_new/2021111800001_14_05.yml
+++ b/data/whats_new/2021111800001_14_05.yml
@@ -11,7 +11,7 @@
   release: 14.5
 - name: Add personal README to profile
   description: |
-    You can now add a README section to your GitLab profile! This is a great way to tell others about, your interests, how you work, or anything else you want! To add a README section, create a new public project with the same name as your user account and add a new [README file](https://docs.gitlab.com/ee/user/project/repository/index.html#readme-and-index-files). The contents of that file are automatically shown on your GitLab profile.
+    You can now add a README section to your GitLab profile! This is a great way to tell others about, your interests, how you work, or anything else you want! To add a README section, create a new public project with the same name as your user account and add a new [README file](https://docs.gitlab.com/ee/user/project/repository/#readme-and-index-files). The contents of that file are automatically shown on your GitLab profile.
   stage: Foundations
   self-managed: true
   gitlab-com: true
diff --git a/data/whats_new/202201200001_14_07.yml b/data/whats_new/202201200001_14_07.yml
index 1afad7f2f37fb6bb80ff72784d6861328ea19c68..214601e12ba1c08ed27b61576d8eda78ac318381 100644
--- a/data/whats_new/202201200001_14_07.yml
+++ b/data/whats_new/202201200001_14_07.yml
@@ -5,7 +5,7 @@
   self-managed: true
   gitlab-com: false
   available_in: [Free, Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/runner/install/index.html#fips-compliant-gitlab-runner'
+  documentation_link: 'https://docs.gitlab.com/runner/install/#fips-compliant-gitlab-runner'
   image_url: https://about.gitlab.com/images/growth/verify.png
   published_at: 2022-01-22
   release: 14.7
diff --git a/data/whats_new/202202210001_14_08.yml b/data/whats_new/202202210001_14_08.yml
index a6c21dce3637a56f3daf8e0e3556ed058ffc9ac5..ac9470132356a6c6158e2c9ee94162da811bd608 100644
--- a/data/whats_new/202202210001_14_08.yml
+++ b/data/whats_new/202202210001_14_08.yml
@@ -19,7 +19,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/ci/pipeline_editor/index.html#validate-ci-configuration'
+  documentation_link: 'https://docs.gitlab.com/ee/ci/pipeline_editor/#validate-ci-configuration'
   image_url: 'https://about.gitlab.com/images/growth/verify.png'
   published_at: 2022-02-22
   release: 14.8
@@ -85,7 +85,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/user/group/roadmap/index.html#roadmap-settings'
+  documentation_link: 'https://docs.gitlab.com/ee/user/group/roadmap/#roadmap-settings'
   image_url: 'https://about.gitlab.com/images/14_8/rp_roadmap_settings.png'
   published_at: 2022-02-22
   release: 14.8
diff --git a/data/whats_new/202205220001_15_0.yml b/data/whats_new/202205220001_15_0.yml
index eef2c253f07a16eed2d9703a725d9361621b53fa..0eab5c55907b16f0b7d9fbe56b50053a3973f945 100644
--- a/data/whats_new/202205220001_15_0.yml
+++ b/data/whats_new/202205220001_15_0.yml
@@ -52,7 +52,7 @@
   self-managed: true  # Boolean value (true or false)
   gitlab-com: true  # Boolean value (true or false)
   available_in: [Free, Premium, Ultimate]  # Array of strings. The Array brackets are required here. e.g., [Free, Starter, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/discussions/index.html#add-an-internal-note  # This is the documentation URL, but can be a URL to a video if there is one
+  documentation_link: https://docs.gitlab.com/ee/user/discussions/#add-an-internal-note  # This is the documentation URL, but can be a URL to a video if there is one
   image_url: https://about.gitlab.com/images/15_0/add_internal_note_v15_0.png  # This should be a full URL, generally taken from the release post content. If a video, use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
   published_at: 2022-05-22  # YYYY-MM-DD
   release: 15.0  # XX.Y
diff --git a/data/whats_new/202209220001_15_04.yml b/data/whats_new/202209220001_15_04.yml
index 8909c624d56e53b0ab581386e3d53fcb9e07e25e..fe5b3a2594504bc7e6469a803d84ba379e43e65a 100644
--- a/data/whats_new/202209220001_15_04.yml
+++ b/data/whats_new/202209220001_15_04.yml
@@ -38,7 +38,7 @@
   self-managed: false  # Boolean value (true or false)
   gitlab-com: true  # Boolean value (true or false)
   available_in: [Premium, Ultimate]  # Array of strings. The Array brackets are required here. e.g., [Free, Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/user/group/saml_sso/index.html#bypass-user-verification-with-verified-domains'  # This is the documentation URL, but can be a URL to a video if there is one
+  documentation_link: 'https://docs.gitlab.com/ee/user/group/saml_sso/#bypass-user-verification-with-verified-domains'  # This is the documentation URL, but can be a URL to a video if there is one
   image_url: https://about.gitlab.com/images/15_4/domain-verification.png  # This should be a full URL, generally taken from the release post content. If a video, use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
   published_at: 2022-09-22  # YYYY-MM-DD
   release: 15.4  # XX.Y
diff --git a/data/whats_new/202210220001_15_5.yml b/data/whats_new/202210220001_15_5.yml
index 52752a6527be20fe67e615389103782c057e6afa..ceb7481dce28c1832fa947f3a211e13428e51997 100644
--- a/data/whats_new/202210220001_15_5.yml
+++ b/data/whats_new/202210220001_15_5.yml
@@ -1,11 +1,11 @@
 - name: "Deploy apps to Google Cloud with GitLab Cloud Seed"
   description: |
-    Cloud Seed allows GitLab and Google Cloud customers to migrate to the cloud using a single platform, consolidating their tech stack without slowing down their cloud adoption process. Cloud Seed is built into the GitLab web UI and leverages CI/CD pipeline capabilities. It is specifically tailored to offer a frictionless developer experience for consuming Google Cloud services, supporting [Service Accounts](https://docs.gitlab.com/ee/cloud_seed/index.html#set-up-deployment-credentials), [Regions](https://docs.gitlab.com/ee/cloud_seed/index.html#configure-your-preferred-gcp-region), [Cloud Run](https://docs.gitlab.com/ee/cloud_seed/index.html#deploy-to-google-cloud-run), and [Cloud SQL](https://docs.gitlab.com/ee/cloud_seed/index.html#provision-cloud-sql-databases).
+    Cloud Seed allows GitLab and Google Cloud customers to migrate to the cloud using a single platform, consolidating their tech stack without slowing down their cloud adoption process. Cloud Seed is built into the GitLab web UI and leverages CI/CD pipeline capabilities. It is specifically tailored to offer a frictionless developer experience for consuming Google Cloud services, supporting [Service Accounts](https://docs.gitlab.com/ee/cloud_seed/#set-up-deployment-credentials), [Regions](https://docs.gitlab.com/ee/cloud_seed/#configure-your-preferred-gcp-region), [Cloud Run](https://docs.gitlab.com/ee/cloud_seed/#deploy-to-google-cloud-run), and [Cloud SQL](https://docs.gitlab.com/ee/cloud_seed/#provision-cloud-sql-databases).
   stage: Release
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: 'https://docs.gitlab.com/ee/cloud_seed/index.html'
+  documentation_link: 'https://docs.gitlab.com/ee/cloud_seed/'
   image_url: 'https://img.youtube.com/vi/zDMGCyAgCPY/hqdefault.jpg'
   published_at: 2022-10-22
   release: 15.5
diff --git a/data/whats_new/202212200001_15_07.yml b/data/whats_new/202212200001_15_07.yml
index cfac3ef9ded7655fd77eb840f927d885d98869ad..60f21b842ba7dbc0e99c96e43f3ba3c1efdf58b2 100644
--- a/data/whats_new/202212200001_15_07.yml
+++ b/data/whats_new/202212200001_15_07.yml
@@ -92,14 +92,14 @@
   release: 15.7
 - name: "Select predefined CI/CD variables values from a dropdown list"
   description: |  # Do not modify this line, instead modify the lines below.
-    Previously, you could [pre-fill CI/CD variables in the "Run pipeline" page](https://docs.gitlab.com/ee/ci/pipelines/index.html#prefill-variables-in-manual-pipelines), with a specific value. Unfortunately, if you had multiple options for the variable's value, you still had to manually input the option you wanted. This was an error-prone process because you could easily input an invalid value, or just mistype it.
+    Previously, you could [pre-fill CI/CD variables in the "Run pipeline" page](https://docs.gitlab.com/ee/ci/pipelines/#prefill-variables-in-manual-pipelines), with a specific value. Unfortunately, if you had multiple options for the variable's value, you still had to manually input the option you wanted. This was an error-prone process because you could easily input an invalid value, or just mistype it.
 
     In this release, we've added the ability to set a list of values which are surfaced in a drop-down list in the "Run pipeline" page. Now you can define the exact list of values that are valid for each CI/CD variable when running a pipeline manually, greatly simplifying your workflow when using manually-triggered pipelines.
   stage: configure
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/pipelines/index.html#prefill-variables-in-manual-pipelines
+  documentation_link: https://docs.gitlab.com/ee/ci/pipelines/#prefill-variables-in-manual-pipelines
   image_url: https://about.gitlab.com/images/15_7/prefill.png
   published_at: 2022-12-22
   release: 15.7
@@ -123,7 +123,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/jobs/index.html#specifying-variables-when-running-manual-jobs
+  documentation_link: https://docs.gitlab.com/ee/ci/jobs/#specifying-variables-when-running-manual-jobs
   image_url: https://img.youtube.com/vi/YTM_BYL3gXI/hqdefault.jpg
   published_at: 2022-12-22
   release: 15.7
diff --git a/data/whats_new/202305220001_16_0.yml b/data/whats_new/202305220001_16_0.yml
index 1ecefedda63d88708e497b6d424841859fc73ce6..40ca7a07322bdb6faea43a166d605a5edf49f89d 100644
--- a/data/whats_new/202305220001_16_0.yml
+++ b/data/whats_new/202305220001_16_0.yml
@@ -124,12 +124,12 @@
 
     After the GitLab Agent for Kubernetes is configured and [the dependencies are installed](https://docs.gitlab.com/ee/user/workspace/#prerequisites) in your self-hosted cluster or cloud platform of choice, you can define your development environment in a `.devfile.yaml` file and store it in a public project. Then, you and any other developers with access to the agent can create a workspace based on the `.devfile.yaml` file and edit directly in the embedded Web IDE. You'll have full terminal access to the container, allowing you to work more efficiently. When you're done, or if something goes wrong, you can shut down the workspace and start a fresh, new workspace for your next development task.
 
-    This short video walks you through the lifecycle of a workspace in the current Beta. Learn more about workspaces in the [documentation](https://docs.gitlab.com/ee/user/workspace/index.html) and let us know what you think in the [feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/410031).
+    This short video walks you through the lifecycle of a workspace in the current Beta. Learn more about workspaces in the [documentation](https://docs.gitlab.com/ee/user/workspace/) and let us know what you think in the [feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/410031).
   stage: Create
   self-managed: true
   gitlab-com: true
   available_in: [Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/workspace/index.html
+  documentation_link: https://docs.gitlab.com/ee/user/workspace/
   image_url: https://img.youtube.com/vi/yjweL075Cdo/hqdefault.jpg
   published_at: 2023-05-22
   release: 16.0
diff --git a/data/whats_new/202306220001_16_1.yml b/data/whats_new/202306220001_16_1.yml
index ba2631c8cf7cf00c4ee27b7293832c40f4bad4c4..abc07c12e6b2df703acc24324c399cbc64d77213 100644
--- a/data/whats_new/202306220001_16_1.yml
+++ b/data/whats_new/202306220001_16_1.yml
@@ -18,7 +18,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/tutorials/left_sidebar/index.html
+  documentation_link: https://docs.gitlab.com/ee/tutorials/left_sidebar/
   image_url: https://img.youtube.com/vi/rGTl9_HIpbY/hqdefault.jpg
   published_at: 2023-06-22
   release: 16.1
diff --git a/data/whats_new/202309220001_16_4.yml b/data/whats_new/202309220001_16_4.yml
index c7ca508cb39c7cc9e6140a34e9ce5bf48f3a6832..650d2da08a8d0efb7977f32edbc7923dff8fb641 100644
--- a/data/whats_new/202309220001_16_4.yml
+++ b/data/whats_new/202309220001_16_4.yml
@@ -59,7 +59,7 @@
   available_in: [Free, Premium, Ultimate]
   self-managed: true
   gitlab-com: true
-  documentation_link: 'https://docs.gitlab.com/ee/ci/yaml/index.html#id_tokens'
+  documentation_link: 'https://docs.gitlab.com/ee/ci/yaml/#id_tokens'
   image_url: 'https://about.gitlab.com/images/16_4/id_tokens_img.png'
   published_at: 2023-09-22
   release: 16.4
diff --git a/data/whats_new/202312210001_16_7.yml b/data/whats_new/202312210001_16_7.yml
index 5850ae83d092914f2e6e178feba051632263f511..015682429b358fc465e16f502d2d1b1ec65441d4 100644
--- a/data/whats_new/202312210001_16_7.yml
+++ b/data/whats_new/202312210001_16_7.yml
@@ -4,7 +4,7 @@
 
     GitLab Duo Code Suggestions helps teams create software faster and more efficiently, by completing lines of code and defining and generating logic for functions.
 
-    Code Suggestions is built with privacy as a critical foundation. Private, non-public customer code stored in GitLab is not used as training data. Learn about [data usage](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/_index.html#code-suggestions-data-usage) when using Code Suggestions.
+    Code Suggestions is built with privacy as a critical foundation. Private, non-public customer code stored in GitLab is not used as training data. Learn about [data usage](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/#code-suggestions-data-usage) when using Code Suggestions.
 
     In the general release, we've made [Code Suggestions available across several IDEs](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/#supported-editor-extensions). Code Suggestions is also now more intuitive and responsive.
 
diff --git a/data/whats_new/202401180001_16_8.yml b/data/whats_new/202401180001_16_8.yml
index 7869f12e4a862745cf95d00f38b55111fcd560eb..287c3b136a7f7ac7178de61a00058090db172842 100644
--- a/data/whats_new/202401180001_16_8.yml
+++ b/data/whats_new/202401180001_16_8.yml
@@ -63,7 +63,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/group/issues_analytics/index.html
+  documentation_link: https://docs.gitlab.com/ee/user/group/issues_analytics/
   image_url: https://about.gitlab.com/images/16_8/closed_issues_analytics.png
   published_at: 2024-01-18
   release: 16.8
diff --git a/data/whats_new/202402130001_16_9.yml b/data/whats_new/202402130001_16_9.yml
index 37ffb945d48a59586ace6f59885b6820bb04b068..fa1c8a616a8f0f204a51b63f917a976ac3029a6d 100644
--- a/data/whats_new/202402130001_16_9.yml
+++ b/data/whats_new/202402130001_16_9.yml
@@ -63,14 +63,14 @@
 
 - name: Expanded options for auto-canceling pipelines
   description: |
-    Currently, to use the [auto-cancel redundant pipeline feature](https://docs.gitlab.com/ee/ci/pipelines/settings.html#auto-cancel-redundant-pipelines), you must set jobs that can be canceled as [`interruptible: true`](https://docs.gitlab.com/ee/ci/yaml/index.html#interruptible) to determine whether or not a pipeline can be canceled. But this only applies to jobs that are actively running when GitLab tries to cancel the pipeline. Any jobs that have not yet started (are in "pending" status) are also considered safe to cancel, regardless of their `interruptible` configuration.
+    Currently, to use the [auto-cancel redundant pipeline feature](https://docs.gitlab.com/ee/ci/pipelines/settings.html#auto-cancel-redundant-pipelines), you must set jobs that can be canceled as [`interruptible: true`](https://docs.gitlab.com/ee/ci/yaml/#interruptible) to determine whether or not a pipeline can be canceled. But this only applies to jobs that are actively running when GitLab tries to cancel the pipeline. Any jobs that have not yet started (are in "pending" status) are also considered safe to cancel, regardless of their `interruptible` configuration.
 
     This lack of flexibility hinders users who want more control over which exact jobs can be canceled by the auto-cancel pipeline feature. To address this limitation, we are pleased to announce the introduction of the `auto_cancel:on_new_commit` keywords with more granular control over job cancellation. If the legacy behavior did not work for you, you now have the option to configure the pipeline to only cancel jobs that are explicitly set with `interruptible: true`, even if they haven't started yet. You can also set jobs to never be automatically canceled.
   stage: verify
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/ci/yaml/index.html#workflowauto_cancelon_new_commit
+  documentation_link: https://docs.gitlab.com/ee/ci/yaml/#workflowauto_cancelon_new_commit
   image_url: https://about.gitlab.com/images/16_9/interruptible.png
   published_at: 2024-02-15
   release: 16.9
diff --git a/data/whats_new/202403210001_16_10.yml b/data/whats_new/202403210001_16_10.yml
index a9a678dac1c26623b385d4c3d6e9557271f53a7a..63d1fc1bea2f8d30e1ac4d58ba0bfca807d7b605 100644
--- a/data/whats_new/202403210001_16_10.yml
+++ b/data/whats_new/202403210001_16_10.yml
@@ -33,7 +33,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/project/wiki/index.html#wiki-page-templates
+  documentation_link: https://docs.gitlab.com/ee/user/project/wiki/#wiki-page-templates
   image_url: https://about.gitlab.com/images/16_10/wiki_templates.gif
   published_at: 2024-03-21
   release: 16.10
diff --git a/data/whats_new/202404160001_16_11.yml b/data/whats_new/202404160001_16_11.yml
index 7f4792e7fec46df0312fae9e59da2ea5a0ecbd32..4a4014bfe7686e34f119610c80d8807de1a5d4b0 100644
--- a/data/whats_new/202404160001_16_11.yml
+++ b/data/whats_new/202404160001_16_11.yml
@@ -53,7 +53,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/editor_extensions/jetbrains_ide/index.html
+  documentation_link: https://docs.gitlab.com/ee/editor_extensions/jetbrains_ide/
   image_url: https://about.gitlab.com/images/16_11/create-duo-chat-in-jetbrains.png
   published_at: 2024-04-18
   release: 16.11
diff --git a/data/whats_new/20240620001_17_1.yml b/data/whats_new/20240620001_17_1.yml
index 6322fa3d627f5a07b8aeccae0df8e16137350b09..05fc9d32e73675089ad42a1caf3d78abb64314f8 100644
--- a/data/whats_new/20240620001_17_1.yml
+++ b/data/whats_new/20240620001_17_1.yml
@@ -38,7 +38,7 @@
 
     Need to bypass secret push protection for testing? When you skip secret push detection, GitLab logs an audit event so you can investigate.
 
-    Secret push protection is available on GitLab.com and for Dedicated customers as a [Beta](https://docs.gitlab.com/ee/policy/experiment-beta-support.html#beta) feature and can be enabled on a [per project basis](https://docs.gitlab.com/ee/user/application_security/secret_detection/secret_push_protection/index.html#enable-secret-push-protection-in-a-project). You can help us improve secret push protection by providing feedback in [issue 467408](https://gitlab.com/gitlab-org/gitlab/-/issues/467408).
+    Secret push protection is available on GitLab.com and for Dedicated customers as a [Beta](https://docs.gitlab.com/ee/policy/experiment-beta-support.html#beta) feature and can be enabled on a [per project basis](https://docs.gitlab.com/ee/user/application_security/secret_detection/secret_push_protection/#enable-secret-push-protection-in-a-project). You can help us improve secret push protection by providing feedback in [issue 467408](https://gitlab.com/gitlab-org/gitlab/-/issues/467408).
   stage: secure
   self-managed: false
   gitlab-com: true
diff --git a/data/whats_new/202407180001_17_02.yml b/data/whats_new/202407180001_17_02.yml
index 4c1850d125bbc35fe9eb598c0c67883f92fedfbf..d73dd568109774240cc4f2c7fab616a8ca87f68b 100644
--- a/data/whats_new/202407180001_17_02.yml
+++ b/data/whats_new/202407180001_17_02.yml
@@ -25,7 +25,7 @@
   self-managed: true  # Boolean value (true or false)
   gitlab-com: true  # Boolean value (true or false)
   available_in: [Free, Premium, Ultimate]  # Array of strings. The Array brackets are required here. e.g., [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/packages/terraform_module_registry/index.html#view-terraform-modules  # This is the documentation URL, but can be a URL to a video if there is one
+  documentation_link: https://docs.gitlab.com/ee/user/packages/terraform_module_registry/#view-terraform-modules  # This is the documentation URL, but can be a URL to a video if there is one
   image_url: https://img.youtube.com/vi/SWRwW4pS7Gk/hqdefault.jpg  # This should be a full URL, generally taken from the release post content. If a video, use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg
   published_at: 2024-07-18  # YYYY-MM-DD
   release: 17.2  # XX.Y
diff --git a/data/whats_new/202409190001_17_04.yml b/data/whats_new/202409190001_17_04.yml
index c59a2513aa9295deb931a7601a165194bf3b5650..bd36010712680c8f9f0549440fd96d11356a8568 100644
--- a/data/whats_new/202409190001_17_04.yml
+++ b/data/whats_new/202409190001_17_04.yml
@@ -31,7 +31,7 @@
   self-managed: true
   gitlab-com: true
   available_in: [Free, Premium, Ultimate]
-  documentation_link: https://docs.gitlab.com/ee/user/project/web_ide/index.html#extension-marketplace
+  documentation_link: https://docs.gitlab.com/ee/user/project/web_ide/#extension-marketplace
   image_url: https://about.gitlab.com/images/17_4/extensions-marketplace.png
   published_at: 2024-09-19
   release: 17.4
diff --git a/data/whats_new/202412190001_17_07.yml b/data/whats_new/202412190001_17_07.yml
index d59bec09e4dba80fd3654c38b74155a07b0ccd3a..cfa6e4d0f1ccf798bfa57ac8bc177b08a6b4f46f 100644
--- a/data/whats_new/202412190001_17_07.yml
+++ b/data/whats_new/202412190001_17_07.yml
@@ -65,7 +65,7 @@
   self-managed: true
   gitlab-com: true
   available_in: ["Premium", "Ultimate"]
-  documentation_link: https://docs.gitlab.com/ee/api/graphql/reference/index.html#queryprojectsusingcomponents
+  documentation_link: https://docs.gitlab.com/ee/api/graphql/reference/#queryprojectsusingcomponents
   image_url: https://about.gitlab.com/images/17_7/catalog.png
   published_at: 2024-12-19
   release: 17.7
diff --git a/doc/update/deprecations.md b/doc/update/deprecations.md
index 08f9230f6eb666c5005aa98c6a5f24bb77cb8d07..c515ae95cae1c5a5cba48a15db91cdc5179b5bf4 100644
--- a/doc/update/deprecations.md
+++ b/doc/update/deprecations.md
@@ -13,7 +13,7 @@ The following GitLab features are deprecated and no longer recommended for use.
 - Some features cause breaking changes when they are removed.
 - On GitLab.com, deprecated features can be removed at any time during the month leading up to the release.
 - To view documentation for a removed feature, see the [GitLab Docs archive](https://docs.gitlab.com/archives/).
-- For GraphQL API deprecations, you should [verify your API calls work without the deprecated items](https://docs.gitlab.com/ee/api/graphql/index.html#verify-against-the-future-breaking-change-schema).
+- For GraphQL API deprecations, you should [verify your API calls work without the deprecated items](https://docs.gitlab.com/ee/api/graphql/#verify-against-the-future-breaking-change-schema).
 
 For advanced searching and filtering of this deprecation information, try
 [a tool built by our Customer Success team](https://gitlab-com.gitlab.io/cs-tools/gitlab-cs-tools/what-is-new-since/?tab=deprecations).
@@ -1306,7 +1306,7 @@ The `previousStageJobsOrNeeds` field in GraphQL will be removed as it has been r
 
 </div>
 
-In 18.0 we are removing the `duoProAssignedUsersCount` GraphQL field. Users may experience issues if they are using this field with the [`aiMetrics` API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#aimetrics), and instead they can use the `duoAssignedUsersCount`. This removal is part of the [fix to count both GitLab Duo Pro and Duo seats assigned users](https://gitlab.com/gitlab-org/gitlab/-/issues/485510).
+In 18.0 we are removing the `duoProAssignedUsersCount` GraphQL field. Users may experience issues if they are using this field with the [`aiMetrics` API](https://docs.gitlab.com/ee/api/graphql/reference/#aimetrics), and instead they can use the `duoAssignedUsersCount`. This removal is part of the [fix to count both GitLab Duo Pro and Duo seats assigned users](https://gitlab.com/gitlab-org/gitlab/-/issues/485510).
 
 </div>
 
@@ -1455,7 +1455,7 @@ A new method to bind runners to a GitLab instance has been implemented
 as part of the new [GitLab Runner token architecture](https://docs.gitlab.com/ee/ci/runners/new_creation_workflow.html).
 For details, see [epic 7633](https://gitlab.com/groups/gitlab-org/-/epics/7633).
 This new architecture introduces a new method for registering runners and eliminates the legacy
-[runner registration token](https://docs.gitlab.com/ee/security/tokens/index.html#runner-registration-tokens-deprecated).
+[runner registration token](https://docs.gitlab.com/ee/security/tokens/#runner-registration-tokens-deprecated).
 In GitLab 18.0, only the runner registration methods implemented in the new GitLab Runner token architecture will be supported.
 
 </div>
@@ -1528,7 +1528,7 @@ We plan to implement a new method to bind runners to a GitLab instance
 as part of the new [GitLab Runner token architecture](https://docs.gitlab.com/ee/ci/runners/new_creation_workflow.html).
 The work is planned in [this epic](https://gitlab.com/groups/gitlab-org/-/epics/7633).
 This new architecture introduces a new method for registering runners and will eliminate the legacy
-[runner registration token](https://docs.gitlab.com/ee/security/tokens/index.html#runner-registration-tokens-deprecated).
+[runner registration token](https://docs.gitlab.com/ee/security/tokens/#runner-registration-tokens-deprecated).
 From GitLab 18.0 and later, the runner registration methods implemented by the new GitLab Runner token architecture will be the only supported methods.
 
 </div>
@@ -2484,7 +2484,7 @@ The message field was removed from security reports schema in GitLab 16.0 and is
 
 </div>
 
-The GitLab Runner Kubernetes executor setting, `terminationGracePeriodSeconds`, is deprecated and will be removed in GitLab 17.0. To manage the cleanup and termination of GitLab Runner worker pods on Kubernetes, customers should instead configure `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`. For information about how to use the `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`, see the [GitLab Runner Executor documentation](https://docs.gitlab.com/runner/executors/kubernetes/index.html#other-configtoml-settings).
+The GitLab Runner Kubernetes executor setting, `terminationGracePeriodSeconds`, is deprecated and will be removed in GitLab 17.0. To manage the cleanup and termination of GitLab Runner worker pods on Kubernetes, customers should instead configure `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`. For information about how to use the `cleanupGracePeriodSeconds` and `podTerminationGracePeriodSeconds`, see the [GitLab Runner Executor documentation](https://docs.gitlab.com/runner/executors/kubernetes/#other-configtoml-settings).
 
 </div>
 
@@ -2714,7 +2714,7 @@ The old values `gitlab.kas.privateApi.tls.enabled` and `gitlab.kas.privateApi.tl
 Because the new values provide a streamlined, comprehensive method to enable TLS for KAS, you should use `global.kas.tls.*` instead of `gitlab.kas.privateApi.tls.*`. The `gitlab.kas.privateApi.tls.*` For more information, see:
 
 - The [merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/2888) that introduces the `global.kas.tls.*` values.
-- The [deprecated `gitlab.kas.privateApi.tls.*` documentation](https://docs.gitlab.com/charts/charts/gitlab/kas/index.html#enable-tls-communication-through-the-gitlabkasprivateapi-attributes-deprecated).
+- The [deprecated `gitlab.kas.privateApi.tls.*` documentation](https://docs.gitlab.com/charts/charts/gitlab/kas/#enable-tls-communication-through-the-gitlabkasprivateapi-attributes-deprecated).
 - The [new `global.kas.tls.*` documentation](https://docs.gitlab.com/charts/charts/globals.html#tls-settings-1).
 
 </div>
@@ -3163,7 +3163,7 @@ Users are advised to upgrade to 3.8.8 or greater.
 
 </div>
 
-Offset pagination for the `/users` REST API is deprecated in GitLab 16.5, and will be removed in GitLab 17.0. Use [keyset pagination](https://docs.gitlab.com/ee/api/rest/index.html#keyset-based-pagination) instead.
+Offset pagination for the `/users` REST API is deprecated in GitLab 16.5, and will be removed in GitLab 17.0. Use [keyset pagination](https://docs.gitlab.com/ee/api/rest/#keyset-based-pagination) instead.
 
 </div>
 
@@ -3189,7 +3189,7 @@ and as a result these old JSON web tokens are deprecated:
 - `CI_JOB_JWT_V1`
 - `CI_JOB_JWT_V2`
 
-To prepare for this change, configure your pipelines to use [ID tokens](https://docs.gitlab.com/ee/ci/yaml/index.html#id_tokens)
+To prepare for this change, configure your pipelines to use [ID tokens](https://docs.gitlab.com/ee/ci/yaml/#id_tokens)
 instead of the deprecated tokens. For OIDC compliance, the `iss` claim now uses
 the fully qualified domain name, for example `https://example.com`, previously
 introduced with the `CI_JOB_JWT_V2` token.
@@ -4638,7 +4638,7 @@ We intend to replace this feature with the ability to [embed charts](https://git
 
 </div>
 
-While CI/CD [job names](https://docs.gitlab.com/ee/ci/jobs/index.html#job-name) have a strict 255 character limit, other CI/CD parameters do not yet have validations ensuring they also stay under the limit.
+While CI/CD [job names](https://docs.gitlab.com/ee/ci/jobs/#job-name) have a strict 255 character limit, other CI/CD parameters do not yet have validations ensuring they also stay under the limit.
 
 In GitLab 16.0, validation will be added to strictly limit the following to 255 characters as well:
 
@@ -4677,7 +4677,7 @@ From GitLab 16.0, when you search for environments with the API, you must use at
 
 </div>
 
-In the [GraphQL API](https://docs.gitlab.com/ee/api/graphql/), the `external` field of [`ReleaseAssetLink` type](https://docs.gitlab.com/ee/api/graphql/reference/index.html#releaseassetlink) was used to indicate whether a [release link](https://docs.gitlab.com/ee/user/project/releases/release_fields.html#links) is internal or external to your GitLab instance.
+In the [GraphQL API](https://docs.gitlab.com/ee/api/graphql/), the `external` field of [`ReleaseAssetLink` type](https://docs.gitlab.com/ee/api/graphql/reference/#releaseassetlink) was used to indicate whether a [release link](https://docs.gitlab.com/ee/user/project/releases/release_fields.html#links) is internal or external to your GitLab instance.
 As of GitLab 15.9, we treat all release links as external, and therefore, this field is deprecated in GitLab 15.9, and will be removed in GitLab 16.0.
 To avoid any disruptions to your workflow, please stop using the `external` field because it will be removed and will not be replaced.
 
@@ -5681,7 +5681,7 @@ Previously, the [`PipelineSecurityReportFinding` GraphQL type was updated](https
 
 </div>
 
-The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/index.html#iterationstate)
+The `started` iteration state in the [iterations GraphQL API](https://docs.gitlab.com/ee/api/graphql/reference/#iterationstate)
 and [iterations REST API](https://docs.gitlab.com/ee/api/iterations.html#list-project-iterations) is deprecated.
 
 The GraphQL API version will be removed in GitLab 16.0. This state is being replaced with the `current` state (already available)
@@ -5878,11 +5878,11 @@ With the general availability of Gitaly Cluster ([introduced in GitLab 13.0](htt
 
 Gitaly Cluster offers tremendous benefits for our customers such as:
 
-- [Variable replication factors](https://docs.gitlab.com/ee/administration/gitaly/index.html#replication-factor).
-- [Strong consistency](https://docs.gitlab.com/ee/administration/gitaly/index.html#strong-consistency).
-- [Distributed read capabilities](https://docs.gitlab.com/ee/administration/gitaly/index.html#distributed-reads).
+- [Variable replication factors](https://docs.gitlab.com/ee/administration/gitaly/#replication-factor).
+- [Strong consistency](https://docs.gitlab.com/ee/administration/gitaly/#strong-consistency).
+- [Distributed read capabilities](https://docs.gitlab.com/ee/administration/gitaly/#distributed-reads).
 
-We encourage customers currently using NFS for Git repositories to plan their migration by reviewing our documentation on [migrating to Gitaly Cluster](https://docs.gitlab.com/ee/administration/gitaly/index.html#migrate-to-gitaly-cluster).
+We encourage customers currently using NFS for Git repositories to plan their migration by reviewing our documentation on [migrating to Gitaly Cluster](https://docs.gitlab.com/ee/administration/gitaly/#migrate-to-gitaly-cluster).
 
 </div>
 </div>
@@ -6806,7 +6806,7 @@ If you rely on Java 8 being present in the analyzer environment, you must take a
 As Advanced Search migrations usually require support multiple code paths for a long period of time,
 it's important to clean those up when we safely can. We use GitLab major version upgrades as a safe
 time to remove backward compatibility for indices that have not been fully migrated. See the
-[upgrade documentation](https://docs.gitlab.com/ee/update/index.html#upgrading-to-a-new-major-version) for details.
+[upgrade documentation](https://docs.gitlab.com/ee/update/#upgrading-to-a-new-major-version) for details.
 
 </div>
 
@@ -6857,7 +6857,7 @@ The `instanceStatisticsMeasurements` GraphQL node has been renamed to `usageTren
 
 </div>
 
-[Request profiling](https://docs.gitlab.com/ee/administration/monitoring/performance/index.html) is deprecated in GitLab 14.8 and scheduled for removal in GitLab 15.0.
+[Request profiling](https://docs.gitlab.com/ee/administration/monitoring/performance/) is deprecated in GitLab 14.8 and scheduled for removal in GitLab 15.0.
 
 We're working on [consolidating our profiling tools](https://gitlab.com/groups/gitlab-org/-/epics/7327) and making them more easily accessible.
 We [evaluated](https://gitlab.com/gitlab-org/gitlab/-/issues/350152) the use of this feature and we found that it is not widely used.
@@ -6883,7 +6883,7 @@ The [required pipeline configuration](https://docs.gitlab.com/ee/administration/
 This change to move the feature to GitLab Ultimate tier is intended to help our features better align with our [pricing philosophy](https://handbook.gitlab.com/handbook/company/pricing/#three-tiers) as we see demand for this feature originating primarily from executives.
 
 This change will also help GitLab remain consistent in its tiering strategy with the other related Ultimate-tier features of:
-[Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/index.html#compliance-pipeline-configuration).
+[Security policies](https://docs.gitlab.com/ee/user/application_security/policies/) and [compliance framework pipelines](https://docs.gitlab.com/ee/user/project/settings/#compliance-pipeline-configuration).
 
 </div>
 
@@ -7047,7 +7047,7 @@ We will update the default value of [GitLab-managed CI/CD templates](https://git
 - For Container Scanning, the default image address is already updated. There is no `SECURE_ANALYZERS_PREFIX` variable for Container Scanning.
 
 In a future release, we will stop publishing images to `registry.gitlab.com/gitlab-org/security-products/analyzers`.
-Once this happens, you must take action if you manually pull images and push them into a separate registry. This is commonly the case for [offline deployments](https://docs.gitlab.com/ee/user/application_security/offline_deployments/index.html).
+Once this happens, you must take action if you manually pull images and push them into a separate registry. This is commonly the case for [offline deployments](https://docs.gitlab.com/ee/user/application_security/offline_deployments/).
 Otherwise, you won't receive further updates.
 
 See the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/352564) for more details.
@@ -7122,7 +7122,7 @@ As those are two separate servers, a configuration change will be required in 15
 to explicitly set separate ports for metrics and health-checks.
 The newly introduced settings for `sidekiq['health_checks_*']`
 should always be set in `gitlab.rb`.
-For more information, check the documentation for [configuring Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/index.html).
+For more information, check the documentation for [configuring Sidekiq](https://docs.gitlab.com/ee/administration/sidekiq/).
 
 These changes also require updates in either Prometheus to scrape the new endpoint or k8s health-checks to target the new
 health-check port to work properly, otherwise either metrics or health-checks will disappear.
@@ -7147,9 +7147,9 @@ to serve the Sidekiq metrics, similar to the way Sidekiq will behave in 15.0.
 
 </div>
 
-The Static Site Editor will no longer be available starting in GitLab 15.0. Improvements to the Markdown editing experience across GitLab will deliver similiar benefit but with a wider reach. Incoming requests to the Static Site Editor will be redirected to the [Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/index.html).
+The Static Site Editor will no longer be available starting in GitLab 15.0. Improvements to the Markdown editing experience across GitLab will deliver similiar benefit but with a wider reach. Incoming requests to the Static Site Editor will be redirected to the [Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/).
 
-Current users of the Static Site Editor can view the [documentation](https://docs.gitlab.com/ee/user/project/web_ide/index.html) for more information, including how to remove the configuration files from existing projects.
+Current users of the Static Site Editor can view the [documentation](https://docs.gitlab.com/ee/user/project/web_ide/) for more information, including how to remove the configuration files from existing projects.
 
 </div>
 
@@ -7299,7 +7299,7 @@ The new security approvals feature is similar to vulnerability check. For exampl
 
 </div>
 
-As part of the work to create a [Package Registry GraphQL API](https://gitlab.com/groups/gitlab-org/-/epics/6318), the Package group deprecated the `Version` type for the basic `PackageType` type and moved it to [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/index.html#packagedetailstype).
+As part of the work to create a [Package Registry GraphQL API](https://gitlab.com/groups/gitlab-org/-/epics/6318), the Package group deprecated the `Version` type for the basic `PackageType` type and moved it to [`PackageDetailsType`](https://docs.gitlab.com/ee/api/graphql/reference/#packagedetailstype).
 
 In milestone 15.0, we will completely remove `Version` from `PackageType`.
 
@@ -7425,7 +7425,7 @@ To mitigate possible performance problems, we will remove the `versions` field's
 
 </div>
 
-The `projectFingerprint` field in the [`PipelineSecurityReportFinding`](https://docs.gitlab.com/ee/api/graphql/reference/index.html#pipelinesecurityreportfinding)
+The `projectFingerprint` field in the [`PipelineSecurityReportFinding`](https://docs.gitlab.com/ee/api/graphql/reference/#pipelinesecurityreportfinding)
 GraphQL object is being deprecated. This field contains a "fingerprint" of security findings used to determine uniqueness.
 The method for calculating fingerprints has changed, resulting in different values. Going forward, the new values will be
 exposed in the UUID field. Data previously available in the `projectFingerprint` field will eventually be removed entirely.