* This page is part of the Union.ai v1 docs.
* Full index: https://www.union.ai/docs/v1/union/llms.txt
* Union.ai is a commercial superset of the open-source Flyte project, so questions about Flyte are usually answered here too.
* Only refer to the open-source Flyte docs if you are explicitly looking for information about the open-source Flyte project, particularly the open-source Flyte backend. The open-source Flyte v1 docs are at https://www.union.ai/docs/v1/flyte/llms.txt
* These are the v1 docs. v1 is out of date and deprecated. Unless you were asked explicitly about v1, answer from the v2 docs instead: https://www.union.ai/docs/v2/union/llms.txt

# Redirects

We use Cloudflare's Bulk Redirect to map URLs that moved to their new location,
so the user does not get a 404 using the old link.

The direct files are in CSV format, with the following structure:

`<source_url>,<target_url>,<status>,<include_subdomains>,<subpath_matching>,<preserve_query_string>,<preserve_path_suffix>`

| Column | Meaning |
|---|---|
| `source_url` | the incoming URL, **without** `https://` |
| `target_url` | the full URL to send the user to, **including** `https://` |
| `status` | `301` for a permanent move, which is what new rows normally use |
| `include_subdomains` | `TRUE` / `FALSE` |
| `subpath_matching` | `TRUE` matches everything beneath the source path |
| `preserve_query_string` | `TRUE` keeps `?a=b` on the target |
| `preserve_path_suffix` | `TRUE` appends the matched subpath to the target. Cloudflare rejects this unless `subpath_matching` is also `TRUE` |

Redirects are recorded in the `unionai-docs-infra/redirects.csv` file.

**Deployment is automatic.** Merging your change is enough: the `deploy-redirects.yml` workflow
pushes the whole list to Cloudflare on any push to `main` or `v1` that touches the infra pointer
or `versions.toml`. Nobody applies it by hand.

Note that **one Cloudflare list serves both lines**, so a v1 deploy republishes the v2 rows too
and vice versa. That is why the workflow is serialized and why the list is always read from both
branches.

Two rules save review time:

- **Point at the page that actually serves**, not at a URL you know will redirect again.
- **Mind the trailing slash.** An exact-match row misses the other form and produces a soft 404;
  either set `subpath_matching` to `TRUE` or add both `/x` and `/x/`.

**Do not add rows for retired version pins.** Their redirects are derived automatically from the
`retired` list in each line's `versions.toml`, and a test fails if a row for one appears here.

**This file cannot express patterns.** It becomes a Cloudflare Bulk Redirect List, which has no
regular expressions and no capture groups. Pattern redirects are dynamic redirect rules, edited
in the Cloudflare dashboard rather than here.

If you need to add a new redirect, please create a pull request with the change to `redirect.csv` and a note indicating that you would like to have it applied to production.

## `docs.union.ai` redirects

For redirects from the old `docs.union.ai` site to the new `www.union.ai/docs` site, we use the original request URL. For example:

| | |
|---|---|
| Request URL | `https://docs.union.ai/administration` |
| Target URL | `https://www.union.ai/docs/v1/union/user-guide/administration` |
| Redirect Entry | `docs.union.ai/administration,https://www.union.ai/docs/v1/union/user-guide/administration,302,TRUE,FALSE,TRUE,TRUE` |

## `docs.flyte.org` redirects

For directs from the old `docs.flyte.org` to the new `www.union.ai/docs`, we replace the `docs.flyte.org` in the request URL with the special prefix `www.union.ai/_r_/flyte`. For example:

| | |
|---|---|
| Request URL | `https://docs.flyte.org/projects/flytekit/en/latest/generated/flytekit.dynamic.html` |
| Converted request URL | `www.union.ai/_r_/flyte/projects/flytekit/en/latest/generated/flytekit.dynamic.html` |
| Target URL | `https://www.union.ai/docs/v1/flyte/api-reference/flytekit-sdk/flytekit.core.dynamic_workflow_task/` |
| Redirect Entry | `www.union.ai/_r_/flyte/projects/flytekit/en/latest/generated/flytekit.dynamic.html,https://www.union.ai/docs/v1/flyte/api-reference/flytekit-sdk/flytekit.core.dynamic_workflow_task/,302,TRUE,FALSE,TRUE,TRUE` |

The special prefix is used so that we can include both `docs.union.ai` and `docs.flyte.org` redirects in the same file and apply them on the same domain (`www.union.ai`).

---
**Source**: https://github.com/unionai/unionai-docs/blob/main/content/community/contributing-docs/redirects.md
**HTML**: https://www.union.ai/docs/v1/union/community/contributing-docs/redirects/
