{ "cleanUrls": true, "rewrites": [ { "source": "/helm-charts/index.yaml", "destination": "https://raw.githubusercontent.com/Unleash/helm-charts/gh-pages/index.yaml" }, { "source": "/helm-charts(/?)", "destination": "https://raw.githubusercontent.com/Unleash/helm-charts/gh-pages/README.md" } ], "redirects": [ { "source": "/", "has": [ { "type": "host", "value": "www.featureflagbook.com" } ], "destination": "https://docs.getunleash.io/guides/feature-flag-best-practices", "permanent": false }, { "source": "/user_guide/api-token", "destination": "/concepts/api-tokens-and-client-keys", "permanent": true }, { "source": "/deploy/user_guide/api-token", "destination": "/concepts/api-tokens-and-client-keys", "permanent": true }, { "source": "/how-to/how-to-create-api-tokens", "destination": "/guides/how-to-create-api-tokens", "permanent": true }, { "source": "/how-to/how-to-run-the-unleash-proxy", "destination": "/unleash-edge", "permanent": true }, { "source": "/how-to/how-to-schedule-feature-releases", "destination": "/guides/how-to-schedule-feature-releases", "permanent": true }, { "source": "/how-to/how-to-synchronize-unleash-instances", "destination": "/guides/how-to-synchronize-unleash-instances", "permanent": true }, { "source": "/how-to/unleash-edge-quickstart", "destination": "/guides/unleash-edge-quickstart", "permanent": true }, { "source": "/how-to/how-to-create-project-api-tokens", "destination": "/concepts/api-tokens-and-client-keys#create-an-api-token", "permanent": true }, { "source": "/how-to/how-to-create-personal-access-tokens", "destination": "/concepts/api-tokens-and-client-keys#create-an-api-token", "permanent": true }, { "source": "/how-to/how-to-create-service-accounts", "destination": "/concepts/service-accounts#create-a-service-account", "permanent": true }, { "source": "/advanced/audit_log", "destination": "/concepts/events", "permanent": true }, { "source": "/topics/a-b-testing", "destination": "/guides/a-b-testing", "permanent": true }, { "source": "/topics/feature-flags/feature-flag-best-practices", "destination": "/guides/feature-flag-best-practices", "permanent": true }, { "source": "/api/unleash", "destination": "/api", "permanent": true }, { "source": "/api/open_api", "destination": "/api", "permanent": true }, { "source": "/advanced/archived_toggles", "destination": "/concepts/feature-flags#archive-a-feature-toggle", "permanent": true }, { "source": "/reference/feature-toggle-variants", "destination": "/concepts/feature-flag-variants", "permanent": true }, { "source": "/reference/feature-toggles", "destination": "/concepts/feature-flags", "permanent": true }, { "source": "/advanced/custom-activation-strategy", "destination": "/concepts/activation-strategies#custom-strategies", "permanent": true }, { "source": "/advanced/custom_activation_strategy", "destination": "/concepts/activation-strategies#custom-strategies", "permanent": true }, { "source": "/advanced/feature_toggle_types", "destination": "/concepts/feature-flags#feature-flag-types", "permanent": true }, { "source": "/how-to/how-to-add-feature-flag-naming-patterns", "destination": "/concepts/feature-flags#set-a-naming-pattern", "permanent": true }, { "source": "/how-to/", "destination": "/guides", "permanent": true }, { "source": "/how-to/how-to-add-users-to-unleash", "destination": "/concepts/rbac", "permanent": true }, { "source": "/how-to/how-to-import-export", "destination": "/concepts/import-export", "permanent": true }, { "source": "/how-to/users-and-permissions", "destination": "/concepts/rbac", "permanent": true }, { "source": "/how-to/env", "destination": "/concepts/environments", "permanent": true }, { "source": "/how-to/how-to-create-and-manage-user-groups", "destination": "/concepts/rbac#user-groups", "permanent": true }, { "source": "/how-to/how-to-clone-environments", "destination": "/concepts/environments#clone-an-environment", "permanent": true }, { "source": "/how-to-create-and-display-banners", "destination": "/concepts/banners", "permanent": true }, { "source": "/toggle_variants", "destination": "/concepts/feature-flag-variants", "permanent": true }, { "source": "/advanced/feature_toggle_variants", "destination": "/concepts/feature-flag-variants", "permanent": true }, { "source": "/advanced/toggle_variants", "destination": "/concepts/feature-flag-variants", "permanent": true }, { "source": "/advanced/impression-data", "destination": "/concepts/impression-data", "permanent": true }, { "source": "/advanced/impression_data", "destination": "/concepts/impression-data", "permanent": true }, { "source": "/advanced/stickiness", "destination": "/concepts/stickiness", "permanent": true }, { "source": "/advanced/sso-google", "destination": "/single-sign-on/how-to-add-sso-google", "permanent": true }, { "source": "/advanced/sso-open-id-connect", "destination": "/single-sign-on/how-to-add-sso-open-id-connect", "permanent": true }, { "source": "/advanced/sso-saml-keycloak", "destination": "/single-sign-on/how-to-add-sso-saml-keycloak", "permanent": true }, { "source": "/advanced/sso-saml", "destination": "/single-sign-on/how-to-add-sso-saml", "permanent": true }, { "source": "/how-to/:slug(how-to-add-sso-.*)", "destination": "/single-sign-on/:slug", "permanent": true }, { "source": "/advanced/strategy_constraints", "destination": "/concepts/activation-strategies#constraints", "permanent": true }, { "source": "/advanced/tags", "destination": "/concepts/feature-flags#tags", "permanent": true }, { "source": "/advanced/enterprise-authentication", "destination": "/concepts/sso", "permanent": true }, { "source": "/integrations/integrations", "destination": "/integrate", "permanent": true }, { "source": "/integrations", "destination": "/integrate", "permanent": true }, { "source": "/integrations/jira_server_plugin_installation", "destination": "/integrate/jira-server-plugin-installation", "permanent": true }, { "source": "/integrations/jira_server_plugin_usage", "destination": "/integrate/jira-server-plugin-usage", "permanent": true }, { "source": "/user_guide/client-sdk", "destination": "/sdks", "permanent": true }, { "source": "/client-sdk", "destination": "/sdks", "permanent": true }, { "source": "/user_guide/connect_sdk", "destination": "/sdks", "permanent": true }, { "source": "/sdks/community", "destination": "/sdks", "permanent": true }, { "source": "/sdks/dot_net_sdk", "destination": "/sdks/dotnet", "permanent": true }, { "source": "/sdks/go_sdk", "destination": "/sdks/go", "permanent": true }, { "source": "/sdks/java_sdk", "destination": "/sdks/java", "permanent": true }, { "source": "/sdks/node_sdk", "destination": "/sdks/node", "permanent": true }, { "source": "/sdks/php_sdk", "destination": "/sdks/php", "permanent": true }, { "source": "/sdks/python_sdk", "destination": "/sdks/python", "permanent": true }, { "source": "/sdks/ruby_sdk", "destination": "/sdks/ruby", "permanent": true }, { "source": "/sdks/android_proxy_sdk", "destination": "/sdks/android", "permanent": true }, { "source": "/sdks/proxy-ios", "destination": "/sdks/ios", "permanent": true }, { "source": "/sdks/proxy-javascript", "destination": "/sdks/javascript-browser", "permanent": true }, { "source": "/sdks/proxy-react", "destination": "/sdks/react", "permanent": true }, { "source": "/sdks/proxy-vue", "destination": "/sdks/vue", "permanent": true }, { "source": "/sdks/proxy-svelte", "destination": "/sdks/svelte", "permanent": true }, { "source": "/user_guide/native_apps", "destination": "/unleash-edge", "permanent": true }, { "source": "/user_guide/proxy-api", "destination": "/unleash-edge", "permanent": true }, { "source": "/sdks/unleash-proxy", "destination": "/unleash-edge", "permanent": true }, { "source": "/user_guide/create_feature_toggle", "destination": "/guides/how-to-create-feature-flags", "permanent": true }, { "source": "/user_guide/control_rollout", "destination": "/concepts/activation-strategies", "permanent": true }, { "source": "/user_guide/activation_strategy", "destination": "/concepts/activation-strategies", "permanent": true }, { "source": "/user_guide/environments", "destination": "/concepts/environments", "permanent": true }, { "source": "/user_guide/projects", "destination": "/concepts/projects", "permanent": true }, { "source": "/user_guide/rbac", "destination": "/concepts/rbac", "permanent": true }, { "source": "/advanced/groups", "destination": "/concepts/rbac", "permanent": true }, { "source": "/user_guide/technical_debt", "destination": "/concepts/technical-debt", "permanent": true }, { "source": "/user_guide/unleash_context", "destination": "/concepts/unleash-context", "permanent": true }, { "source": "/user_guide/v4-whats-new", "destination": "/deploy/upgrading-unleash", "permanent": true }, { "source": "/user_guide/important-concepts", "destination": "/concepts", "permanent": true }, { "source": "/tutorials/important-concepts", "destination": "/concepts", "permanent": true }, { "source": "/user_guide/quickstart", "destination": "/get-started/quickstart", "permanent": true }, { "source": "/docs/getting_started", "destination": "/get-started/quickstart", "permanent": true }, { "source": "/tutorials/quickstart", "destination": "/get-started/quickstart", "permanent": true }, { "source": "/tutorials/getting-started", "destination": "/get-started/quickstart", "permanent": true }, { "source": "/api/basic-auth", "destination": "/api", "permanent": true }, { "source": "/help", "destination": "/support", "permanent": true }, { "source": "/topics/feature-flags/tutorials", "destination": "/guides", "permanent": true }, { "source": "/reference", "destination": "/concepts", "permanent": true }, { "source": "/feature-flags-tutorials", "destination": "/guides", "permanent": true }, { "source": "/tutorials", "destination": "/guides", "permanent": true }, { "source": "/topics/feature-flags/tutorials/react/implementing-feature-flags", "destination": "/guides/implement-feature-flags-in-react", "permanent": true }, { "source": "/topics/feature-flags/tutorials/flutter/a-b-testing", "destination": "/guides/implement-ab-test-in-flutter", "permanent": true }, { "source": "/topics/feature-flags/tutorials/nextjs/implementing-feature-flags", "destination": "/guides/implement-feature-flags-in-nextjs", "permanent": true }, { "source": "/tutorials/academy", "destination": "/unleash-academy/introduction", "permanent": true }, { "source": "/unleash-academy", "destination": "/unleash-academy/introduction", "permanent": true }, { "source": "/tutorials/academy-foundational", "destination": "/unleash-academy/foundational", "permanent": true }, { "source": "/tutorials/academy-advanced-for-devs", "destination": "/unleash-academy/advanced-for-devs", "permanent": true }, { "source": "/tutorials/academy-managing-unleash-for-devops", "destination": "/unleash-academy/managing-unleash-for-devops", "permanent": true }, { "source": "/developer-guide", "destination": "/contributing/developer-guide", "permanent": true }, { "source": "/client-specification", "destination": "/contributing/client-specification", "permanent": true }, { "source": "/how-to/how-to-capture-impression-data", "destination": "/guides/how-to-capture-impression-data", "permanent": true }, { "source": "/how-to/how-to-use-the-admin-api", "destination": "/api", "permanent": true }, { "source": "/tutorials/unleash-overview", "destination": "/get-started/unleash-overview", "permanent": true }, { "source": "/user_guide/unleash_overview", "destination": "/get-started/unleash-overview", "permanent": true }, { "source": "/tutorials/managing-constraints", "destination": "/guides/managing-constraints", "permanent": true }, { "source": "/how-to/how-to-enable-openapi", "destination": "/api", "permanent": true }, { "source": "/how-to/api", "destination": "/api", "permanent": true }, { "source": "/topics/managing-constraints", "destination": "/guides/managing-constraints", "permanent": true }, { "source": "/understanding-unleash/managing-constraints", "destination": "/guides/managing-constraints", "permanent": true }, { "source": "/tutorials/the-anatomy-of-unleash", "destination": "/concepts", "permanent": true }, { "source": "/topics/the-anatomy-of-unleash", "destination": "/concepts", "permanent": true }, { "source": "/understanding-unleash", "destination": "/get-started/unleash-overview", "permanent": true }, { "source": "/using-unleash", "destination": "/concepts", "permanent": true }, { "source": "/tutorials/proxy-hosting", "destination": "/deploy/hosting-options", "permanent": true }, { "source": "/topics/proxy-hosting", "destination": "/deploy/hosting-options", "permanent": true }, { "source": "/topics/feature-flags/best-practices-using-feature-flags-at-scale", "destination": "/guides/best-practices-using-feature-flags-at-scale", "permanent": true }, { "source": "/using-unleash/deploy", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/using-unleash/troubleshooting/email-service", "destination": "/deploy/configuring-unleash#configure-an-email-server", "permanent": true }, { "source": "/understanding-unleash/proxy-hosting", "destination": "/deploy/hosting-options", "permanent": true }, { "source": "/understanding-unleash/hosting-options", "destination": "/deploy/hosting-options", "permanent": true }, { "source": "/tutorials/data-collection", "destination": "/privacy-and-compliance/data-privacy", "permanent": true }, { "source": "/topics/data-collection", "destination": "/privacy-and-compliance/data-privacy", "permanent": true }, { "source": "/understanding-unleash/data-collection", "destination": "/privacy-and-compliance/data-privacy", "permanent": true }, { "source": "/topics/feature-flag-migration/feature-flag-migration-best-practices", "destination": "/guides/feature-flag-migration-best-practices", "permanent": true }, { "source": "/how-to/how-to-troubleshoot-flag-exposure", "destination": "/support/troubleshooting", "permanent": true }, { "source": "/how-to/how-to-troubleshoot-flag-not-returned", "destination": "/support/troubleshooting", "permanent": true }, { "source": "/using-unleash/troubleshooting/(cors|flag-abn-unexpected-results|flag-exposure|flag-not-returned)", "destination": "/support/troubleshooting", "permanent": true }, { "source": "/how-to/troubleshooting/https", "destination": "/deploy/https", "permanent": true }, { "source": "/using-unleash/troubleshooting/feature-not-available", "destination": "/support/availability", "permanent": true }, { "source": "/how-to/how-to-download-login-history", "destination": "/concepts/login-history", "permanent": true }, { "source": "/how-to/how-to-manage-public-invite-tokens", "destination": "/concepts/public-signup", "permanent": true }, { "source": "/how-to/how-to-create-feature-toggles", "destination": "/guides/how-to-create-feature-flags", "permanent": true }, { "source": "/how-to-create-feature-flag", "destination": "/guides/how-to-create-feature-flags", "permanent": true }, { "source": "/how-to/how-to-create-and-assign-custom-root-roles", "destination": "/concepts/rbac#create-and-assign-a-custom-root-role", "permanent": true }, { "source": "/how-to/how-to-create-and-assign-custom-project-roles", "destination": "/concepts/rbac#create-and-assign-a-custom-project-role", "permanent": true }, { "source": "/how-to/how-to-add-strategy-constraints", "destination": "/concepts/activation-strategies#add-strategy-constraint", "permanent": true }, { "source": "/how-to/how-to-use-custom-strategies", "destination": "/concepts/activation-strategies", "permanent": true }, { "source": "/how-to/how-to-define-custom-context-fields", "destination": "/concepts/activation-strategies#create-a-custom-context-field", "permanent": true }, { "source": "/reference/deploy", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/deploy/", "destination": "/deploy/hosting-options", "permanent": false }, { "source": "/deploy", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/support/", "destination": "/support/troubleshooting", "permanent": false }, { "source": "/get-started/", "destination": "/get-started/quickstart", "permanent": false }, { "source": "/reference/deploy/getting-started", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/deploy/getting_started", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/topics", "destination": "/guides", "permanent": true }, { "source": "/use-cases/user-management-access-controls-auditing", "destination": "/guides/user-management-access-controls", "permanent": true }, { "source": "/use-cases", "destination": "/guides", "permanent": true }, { "source": "/languages-and-frameworks", "destination": "/guides", "permanent": true }, { "source": "/feature-flag-tutorials", "destination": "/guides", "permanent": true }, { "source": "/reference/deploy/configuring-unleash", "destination": "/deploy/configuring-unleash", "permanent": true }, { "source": "/deploy/configuring_unleash", "destination": "/deploy/configuring-unleash", "permanent": true }, { "source": "/using-unleash/troubleshooting", "destination": "/support/troubleshooting", "permanent": true }, { "source": "/contributing", "destination": "/contributing/developer-guide", "permanent": true }, { "source": "/availability", "destination": "/support/availability", "permanent": true }, { "source": "/troubleshooting", "destination": "/support/troubleshooting", "permanent": true }, { "source": "/oss-comparison", "destination": "/support/oss-comparison", "permanent": true }, { "source": "/api-overview", "destination": "/api", "permanent": true }, { "source": "/quickstart", "destination": "/get-started/quickstart", "permanent": true }, { "source": "/how-to/how-to-setup-sso-keycloak-group-sync", "destination": "/single-sign-on/how-to-setup-sso-keycloak-group-sync", "permanent": true }, { "source": "/how-to/how-to-set-up-group-sso-sync", "destination": "/single-sign-on/how-to-set-up-group-sso-sync", "permanent": true }, { "source": "/how-to/provisioning", "destination": "/provisioning/how-to-setup-provisioning-with-okta", "permanent": true }, { "source": "/how-to/how-to-setup-provisioning-with-okta", "destination": "/provisioning/how-to-setup-provisioning-with-okta", "permanent": true }, { "source": "/how-to/how-to-setup-provisioning-with-entra", "destination": "/provisioning/how-to-setup-provisioning-with-entra", "permanent": true }, { "source": "/reference/deploy/configuring-unleash-v3", "destination": "/deploy/configuring-unleash", "permanent": true }, { "source": "/deploy/configuring_unleash_v3", "destination": "/deploy/configuring-unleash", "permanent": true }, { "source": "/reference/deploy/database-setup", "destination": "/deploy/configuring-unleash#configure-the-database-connection", "permanent": true }, { "source": "/deploy/database-setup", "destination": "/deploy/configuring-unleash#configure-the-database-connection", "permanent": true }, { "source": "/reference/deploy/database-backup", "destination": "/deploy/configuring-unleash#configure-the-database-connection", "permanent": true }, { "source": "/deploy/database-backup", "destination": "/deploy/configuring-unleash#configure-the-database-connection", "permanent": true }, { "source": "/reference/deploy/email-service", "destination": "/deploy/configuring-unleash#configure-an-email-server", "permanent": true }, { "source": "/deploy/email", "destination": "/deploy/configuring-unleash#configure-an-email-server", "permanent": true }, { "source": "/reference/deploy/google-auth-hook", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/deploy/google_auth", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/using-unleash/deploy/google-auth-hook", "destination": "/deploy/getting-started", "permanent": true }, { "source": "/deploy/migration_guide", "destination": "/deploy/upgrading-unleash", "permanent": true }, { "source": "/reference/deploy/migration-guide", "destination": "/deploy/upgrading-unleash", "permanent": true }, { "source": "/reference/deploy/securing-unleash", "destination": "/deploy/configuring-unleash#securing-unleash", "permanent": true }, { "source": "/deploy/securing_unleash", "destination": "/deploy/configuring-unleash#securing-unleash", "permanent": true }, { "source": "/deploy/import_export", "destination": "/concepts/import-export", "permanent": true }, { "source": "/deploy/environment-import-export", "destination": "/concepts/import-export", "permanent": true }, { "source": "/what-is-a-feature-flag", "destination": "/get-started/what-is-a-feature-flag", "permanent": true }, { "source": "/understanding-unleash/unleash-overview", "destination": "/get-started/unleash-overview", "permanent": true }, { "source": "/understanding-unleash/the-anatomy-of-unleash", "destination": "/concepts", "permanent": true }, { "source": "/feature-flag-tutorials/django/django-examples", "destination": "/guides/feature-flag-examples-django", "permanent": true }, { "source": "/feature-flag-tutorials/java/spring-boot/examples", "destination": "/guides/feature-flag-examples-spring-boot", "permanent": true }, { "source": "/feature-flag-tutorials/serverless/lambda", "destination": "/guides/implement-feature-flags-in-aws-lambda", "permanent": true }, { "source": "/feature-flag-tutorials/flutter/a-b-testing", "destination": "/guides/implement-ab-test-in-flutter", "permanent": true }, { "source": "/feature-flag-tutorials/go", "destination": "/guides/implement-feature-flags-in-golang", "permanent": true }, { "source": "/feature-flag-tutorials/:lang(django|dotnet|golang|ios|java|javascript|nextjs|python|rails|react|ruby|rust|sveltekit)/examples", "destination": "/guides/feature-flag-examples-:lang", "permanent": true }, { "source": "/feature-flag-tutorials/:lang(django|dotnet|ios|java|javascript|nextjs|python|rails|react|ruby|rust|spring-boot|sveltekit)", "destination": "/guides/implement-feature-flags-in-:lang", "permanent": true }, { "source": "/feature-flag-tutorials/use-cases/:path*", "destination": "/guides/:path*", "permanent": true }, { "source": "/get-started/api-overview", "destination": "/api", "permanent": true }, { "source": "/api/admin/:path*", "destination": "/api", "permanent": true }, { "source": "/api/client/:path*", "destination": "/api", "permanent": true }, { "source": "/api/internal/:path*", "destination": "/api", "permanent": true }, { "source": "/api/unleash/:path*", "destination": "/api/:path*", "permanent": true }, { "source": "/api/legacy/:path*", "destination": "/api", "permanent": true }, { "source": "/reference/integrations", "destination": "/integrate", "permanent": true }, { "source": "/reference/mcp", "destination": "/integrate/mcp", "permanent": true }, { "source": "/reference/sdks", "destination": "/sdks", "permanent": true }, { "source": "/reference/unleash-edge", "destination": "/unleash-edge", "permanent": true }, { "source": "/reference/unleash-proxy", "destination": "/unleash-edge", "permanent": true }, { "source": "/unleash-edge/concepts", "destination": "/unleash-edge", "permanent": true }, { "source": "/unleash-edge/benchmarking", "destination": "/unleash-edge/deploy", "permanent": true }, { "source": "/unleash-edge/cli", "destination": "/unleash-edge/configure", "permanent": true }, { "source": "/unleash-edge/deploying", "destination": "/unleash-edge/deploy", "permanent": true }, { "source": "/unleash-edge/migration-guide", "destination": "/unleash-edge/migrate-from-proxy", "permanent": true }, { "source": "/unleash-edge/development-guide", "destination": "/unleash-edge", "permanent": true }, { "source": "/reference/sdks/android-proxy", "destination": "/sdks/android", "permanent": true }, { "source": "/reference/sdks/ios-proxy", "destination": "/sdks/ios", "permanent": true }, { "source": "/reference/api/:path*", "destination": "/api/:path*", "permanent": true }, { "source": "/reference/integrations/:path*", "destination": "/integrate/:path*", "permanent": true }, { "source": "/reference/sdks/:path*", "destination": "/sdks/:path*", "permanent": true }, { "source": "/reference/unleash-edge/:path*", "destination": "/unleash-edge/:path*", "permanent": true }, { "source": "/(reference/)?addons/:path*", "destination": "/integrate/:path*", "permanent": true }, { "source": "/reference/:path*", "destination": "/concepts/:path*", "permanent": true }, { "source": "/using-unleash/deploy/:path*", "destination": "/deploy/:path*", "permanent": true }, { "source": "/using-unleash/compliance/:path*", "destination": "/privacy-and-compliance/:path*", "permanent": true } ] }