Repository navigation
docs: permanent redirects and unique page titles - #189
Merged
Merged
Conversation
Send moved historical and big-data URLs to their current pages with 301s in every locale, and give colliding page titles task-specific names. Also repair the French S3 matrix table, stable heading anchors, duplicate meta descriptions, and the shared search/TOC/copy labels. Co-authored-by: hector <majinghe@users.noreply.github.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
rustfs-docs | 3b32444 | Commit Preview URL Branch Preview URL |
Oct 27 2026, 01:39 AM |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Permanent redirects for historical docs URLs that 404 today, plus the confirmed title, table, anchor, and template fixes. Sidebar labels stay short via
meta.json; the document<title>is the longer frontmatter title./→/enis unchanged. Accept-Language handling inpublic/language-redirect.jsis unchanged. Rules that only point at the English homepage (for example/concepts/architecture→/en) are not copied onto other locales. Splat rules such as/management/*stay English-only so they cannot guess a wrong prefix.Redirects (301)
Base rules live in
public/_redirects.worker.mjsreuses each exact rule foren,zh,de,fr, andjaby swapping the/enprefix. Trailing slashes are stripped before matching, so/de/features/s3-compatibility/and/de/features/s3-compatibilityare the same hop.Historical paths
/installation/docker,/installation/docker/index(and.html)/installation/container/docker/upgrade-scale/upgrade/operations/upgrade(rule already existed; now applies in every locale)/features/s3-compatibility/reference/s3-compatibility/management/bucket,/management/bucket/index/administration/data/bucket/creation/developer/api/administration/protocols/s3There is no bucket index page. Creation is the first page in the Bucket section, so the old bucket index goes there instead of the homepage.
/developer/apigoes to the S3 API page linked from the Developer landing page.big-data moves (#168)
These pages moved out of
developer/integration/big-data/and the old URLs 404 in all five locales:database/storage/ai/Pages that are still under
big-data/(Kafka, Spark, and the rest) are not redirected.Pretty URLs that were 307
The worker now emits 301 for permanent canonicalization before Cloudflare’s asset handler can answer 307:
/ja/→/ja).html(/fr/installation/linux/quick-start.html→/fr/installation/linux/quick-start)/indexand/index.html(/ja/installation/linux/index→/ja/installation/linux)Root files such as
/baidu_verify_*.htmlare left alone./and/index.htmlstay 301 to/en.Other fixes
<title>s in each locale are now task-specific: installation chooser vs Helm install vs Operator install, Helm vs Operator overviews, Docker, rclone examples vs integration, Terraform examples vs integration, the two observability pages, the two pool-expansion pages, and the Japanese container install vs container upgrade titles. Short sidebar labels are preserved inmeta.json.U+202F) before:, so the table was dumped as a paragraph. The separator is ASCII---:again. The built page has 5<table>elements, including<th>Liste</th><th>Cas</th><th>Rôle</th>.[#…]in every locale (deployment comparison, storage/erasure, event/audit targets, CORS, Docker bind-mount, policy format, policy evaluation, KMS verification, known S3 differences, quick-start next steps). French and German links that still used translated fragments now point at those ids.<meta name="description">. The extra copy inpress.config.tsxis removed. Built homepages and the Docker page each have one description tag. Pages with no description still get the site-wide fallback.zhCNpreset.Verification
npm run buildsucceeded (267 Cloudflare rules).npm run docs:checkpassed.npm run test:worker: 20 passed, including the builtdist/public/_redirects.Local equivalent of
curl -sIagainst the worker and the built rules (status 301, one hop, query string kept):/de/installation/docker/index/de/installation/container/docker/de/installation/docker/index.html/de/installation/container/docker/zh/installation/docker/zh/installation/container/docker/de/upgrade-scale/upgrade//de/operations/upgrade/de/features/s3-compatibility//de/reference/s3-compatibility/de/management/bucket/index/de/administration/data/bucket/creation/ja/developer/api/ja/administration/protocols/s3/en/developer/integration/big-data/duckdb/en/developer/integration/database/duckdb/zh/developer/integration/big-data/trino//zh/developer/integration/database/trino/de/developer/integration/big-data/lakefs/de/developer/integration/storage/lakefs/en/developer/integration/big-data/mlflow/en/developer/integration/ai/mlflow/ja//ja/ja/installation/linux/index/ja/installation/linux/fr/installation/linux/quick-start.html/fr/installation/linux/quick-startEach target above exists as a built
index.html(HTTP 200 when the static file is served)./de/reference/s3-compatibilityand/de/developer/integration/database/duckdbare not redirected again./de/concepts/architectureis not sent to the German homepage./en/concepts/architecturestill 301s to/en.Built HTML checks: Docker
<title>isInstall and configure RustFS with Docker/RustFS mit Docker installieren und konfigurieren; Helm and Operator overviews no longer share概要;/de/installationhasid="deployment-mode-comparison"; the German Docker page renders “Suche”, “Auf dieser Seite”, and “Markdown kopieren”.