Redirecting renamed or deleted pages
Each .rst file published to docs.typo3.org is a page with its own URL.
Unlike an anchor within a page (see link anchors),
there is no in-repo mechanism to keep an old file's URL working after it is
renamed or deleted.
This page describes a rule for the official TYPO3 documentation repositories (maintained under the TYPO3-Documentation organization — this manual, the Core API reference, and similar), not for third-party extension documentation — the process goes through a repository maintained by TYPO3 GmbH, and does not scale to a pull request per extension for every rename.
Within those official repositories, whenever a change renames or deletes a page — an actual change to the file's path, not just moving an anchor to a different heading within another page — a redirect for the old URL must be added, per the process below. Reviewers should ask for this on any PR that renames or deletes a page and does not already include it. This is not a courtesy: we have had real, concrete complaints from users who followed an old bookmarked or search-indexed link and landed on a hard 404 with no explanation.
Adding a redirect
Redirects are configured in a separate repository,
TYPO3GmbH/site-intercept,
in the file config/. Anyone can open a pull
request there against the develop branch — you do not need to be a
maintainer of this or any other documentation repository to do so.
Add an nginx location rule for the old path, using your own repository's
package name in place of <repo- below (for this manual, that is
docs-):
-
Renamed or moved to a different existing page — redirect straight to the new path:
location ~ ^/m/typo3/<repo-package>/(main|14.3)/en-us/Old/Path/Index.html$ { return 303 /m/typo3/<repo-package>/$1/en-us/New/Path/Index.html; }Copied! -
Deleted, with no replacement — redirect to a page that still explains what happened, rather than to an unrelated page. A common pattern is a dedicated
Documentation/page, with one section per removed concept, that the redirect can link an anchor within — see the TYPO3 Core API reference's 404.rst for a real example:404. rst :orphan:at the top (it is only ever reached via a redirect, not linked from the table of contents), then one section per TYPO3 version, each removed concept as its own heading with the anchor(s) that used to point to it, a.. deprecated::or.. versionchanged::directive linking the changelog entry, and a short note on what to do instead. Most repos won't need this from the start — create it the first time you need to redirect removed content somewhere:location ~ ^/m/typo3/<repo-package>/(main|14.3)/en-us/Old/Path/Index.html$ { return 303 /m/typo3/<repo-package>/$1/en-us/404.html#old-concept-anchor; }Copied!
Scope the version group ((main, (main, ...) to the
versions where the old path actually existed. Use 303 for a redirect to
different content, 301 if it is genuinely permanent and the same content
just moved.
Important
redirects. is shared production infrastructure for all of
docs.typo3.org — a syntax error there takes the whole site down.