From a3a5988dc589ea09558208e91f87c946e62bd2f0 Mon Sep 17 00:00:00 2001 From: Nick Gagliardi Date: Tue, 13 Oct 2026 09:25:26 -0400 Subject: [PATCH] fix: restore legacy /docs/api-auth/* redirects removed in #2002 #2002 (old redirect cleanup, first pass) deleted all 53 redirects sourced under /docs/api-auth/* as low-traffic/unindexed. A customer reported two of these as hard 404s this week: /docs/api-auth/tutorials/adoption/api-tokens /docs/api-auth/tutorials/adoption/refresh-tokens Their application code and error messages link directly to these paths, so GSC/page-view data wouldn't have caught this - the traffic isn't organic search, it's inbound from external code depending on the URL staying stable. Restored all 53 entries removed in that commit, pointing at the same destinations, since all but one still resolve correctly today. The one exception (/docs/api-auth/token-renewal-in-safari) previously pointed at an internal page that itself now 302s out to an external support article - repointed directly at that external URL instead of chaining through a dead intermediate hop. Verified via a local redirect-matching simulation that all 53 restored sources resolve to their intended destination with no shadowing by an earlier wildcard rule in the file. --- main/config/redirects.json | 214 ++++++++++++++++++++++++++++++++++++- 1 file changed, 213 insertions(+), 1 deletion(-) diff --git a/main/config/redirects.json b/main/config/redirects.json index 7bfbb173f1..ef95e4a1fd 100644 --- a/main/config/redirects.json +++ b/main/config/redirects.json @@ -7718,5 +7718,217 @@ { "source": "/docs/api/management/v2/blacklists/*", "destination": "/docs/api/management/v2" + }, + { + "source": "/docs/api-auth/token-renewal-in-safari", + "destination": "https://support.auth0.com/center/s/article/troubleshoot-auth0-token-renewal-issues-in-safari-with-itp-enabled" + }, + { + "source": "/docs/api-auth/tutorials/adoption/delegation", + "destination": "/docs/secure/tokens/delegation-tokens" + }, + { + "source": "/docs/api-auth/tutorials/adoption/refresh-tokens", + "destination": "/docs/secure/tokens/refresh-tokens" + }, + { + "source": "/docs/api-auth/tutorials/verify-access-token", + "destination": "/docs/secure/tokens/access-tokens/validate-access-tokens" + }, + { + "source": "/docs/api-auth/asking-for-access-tokens", + "destination": "/docs/secure/tokens/access-tokens" + }, + { + "source": "/docs/api-auth/why-use-access-tokens-to-secure-apis", + "destination": "/docs/secure/tokens/access-tokens" + }, + { + "source": "/docs/api-auth/tutorials/adoption/api-tokens", + "destination": "/docs/secure/tokens/access-tokens" + }, + { + "source": "/docs/api-auth/tutorials/multifactor-resource-owner-password", + "destination": "/docs/secure/multi-factor-authentication/authenticate-using-ropg-flow-with-mfa" + }, + { + "source": "/docs/api-auth/tutorials/silent-authentication", + "destination": "/docs/authenticate/login/configure-silent-authentication" + }, + { + "source": "/docs/api-auth/tutorials/adoption", + "destination": "/docs/authenticate/protocols/openid-connect-protocol" + }, + { + "source": "/docs/api-auth/intro", + "destination": "/docs/authenticate/protocols/openid-connect-protocol" + }, + { + "source": "/docs/api-auth/tutorials/using-resource-owner-password-from-server-side", + "destination": "/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow/avoid-common-issues-with-resource-owner-password-flow-and-attack-protection" + }, + { + "source": "/docs/api-auth/tutorials/password-grant", + "destination": "/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow/call-your-api-using-resource-owner-password-flow" + }, + { + "source": "/docs/api-auth/tutorials/adoption/password", + "destination": "/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow" + }, + { + "source": "/docs/api-auth/grant/password", + "destination": "/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow" + }, + { + "source": "/docs/api-auth/grant/using-rules", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow/customize-tokens-using-hooks-with-client-credentials-flow" + }, + { + "source": "/docs/api-auth/tutorials/client-credentials/customize-with-hooks", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow/customize-tokens-using-hooks-with-client-credentials-flow" + }, + { + "source": "/docs/api-auth/config/asking-for-access-tokens", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow/call-your-api-using-the-client-credentials-flow" + }, + { + "source": "/docs/api-auth/tutorials/client-credentials", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow/call-your-api-using-the-client-credentials-flow" + }, + { + "source": "/docs/api-auth/tutorials/adoption/client-credentials", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow" + }, + { + "source": "/docs/api-auth/grant/client-credentials", + "destination": "/docs/get-started/authentication-and-authorization-flow/client-credentials-flow" + }, + { + "source": "/docs/api-auth/tutorials/hybrid-flow", + "destination": "/docs/get-started/authentication-and-authorization-flow/hybrid-flow/call-api-hybrid-flow" + }, + { + "source": "/docs/api-auth/grant/hybrid", + "destination": "/docs/get-started/authentication-and-authorization-flow/hybrid-flow" + }, + { + "source": "/docs/api-auth/tutorials/nonce", + "destination": "/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/mitigate-replay-attacks-when-using-the-implicit-flow" + }, + { + "source": "/docs/api-auth/tutorials/implicit-grant", + "destination": "/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post" + }, + { + "source": "/docs/api-auth/tutorials/adoption/implicit", + "destination": "/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post" + }, + { + "source": "/docs/api-auth/grant/implicit", + "destination": "/docs/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post" + }, + { + "source": "/docs/api-auth/tutorials/authorization-code-grant-pkce", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce" + }, + { + "source": "/docs/api-auth/grant/authorization-code-pkce", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce" + }, + { + "source": "/docs/api-auth/tutorials/authorization-code-grant", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow" + }, + { + "source": "/docs/api-auth/adoption/authorization-code", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow" + }, + { + "source": "/docs/api-auth/tutorials/adoption/authorization-code", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow" + }, + { + "source": "/docs/api-auth/grant/authorization-code", + "destination": "/docs/get-started/authentication-and-authorization-flow/authorization-code-flow" + }, + { + "source": "/docs/api-auth/faq", + "destination": "/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use" + }, + { + "source": "/docs/api-auth/which-oauth-flow-to-use", + "destination": "/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use" + }, + { + "source": "/docs/api-auth/tutorials", + "destination": "/docs/get-started/authentication-and-authorization-flow" + }, + { + "source": "/docs/api-auth", + "destination": "/docs/get-started/authentication-and-authorization-flow" + }, + { + "source": "/docs/api-auth/restrict-requests-for-scopes", + "destination": "/docs/manage-users/access-control/sample-use-cases-rules-with-authorization" + }, + { + "source": "/docs/api-auth/restrict-access-api", + "destination": "/docs/manage-users/access-control/sample-use-cases-rules-with-authorization" + }, + { + "source": "/docs/api-auth/tutorials/adoption/single-sign-on", + "destination": "/docs/authenticate/single-sign-on" + }, + { + "source": "/docs/api-auth/tutorials/represent-multiple-apis", + "destination": "/docs/get-started/apis/set-logical-api" + }, + { + "source": "/docs/api-auth/tutorials/adoption/scope-custom-claims", + "destination": "/docs/get-started/apis/scopes/openid-connect-scopes" + }, + { + "source": "/docs/api-auth/references/dashboard/api-settings", + "destination": "/docs/get-started/apis/api-settings" + }, + { + "source": "/docs/api-auth/apis", + "destination": "/docs/get-started/apis" + }, + { + "source": "/docs/api-auth/user-consent", + "destination": "/docs/get-started/applications/third-party-applications/user-consent-and-third-party-applications" + }, + { + "source": "/docs/api-auth/blacklists-vs-grants", + "destination": "/docs/get-started/applications/revoke-api-access" + }, + { + "source": "/docs/api-auth/config/using-the-management-api", + "destination": "/docs/get-started/applications/update-grant-types" + }, + { + "source": "/docs/api-auth/config/using-the-auth0-dashboard", + "destination": "/docs/get-started/applications/update-grant-types" + }, + { + "source": "/docs/api-auth/dynamic-application-registration", + "destination": "/docs/get-started/applications/dynamic-client-registration" + }, + { + "source": "/docs/api-auth/dynamic-client-registration", + "destination": "/docs/get-started/applications/dynamic-client-registration" + }, + { + "source": "/docs/api-auth/client-types", + "destination": "/docs/get-started/applications" + }, + { + "source": "/docs/api-auth/tutorials/adoption/oidc-conformant", + "destination": "/docs/get-started/applications" + }, + { + "source": "/docs/api-auth/passwordless", + "destination": "/docs/authenticate/passwordless" } -] \ No newline at end of file +]