Use permanent wildcard redirects for moved guides

This commit is contained in:
Dylan Couzon
2026-09-24 12:40:07 -04:00
parent 7ee4fa04bf
commit cb52f14b47
2 changed files with 19 additions and 17 deletions
+1 -1
View File
@@ -320,7 +320,7 @@ Set `guide_series: true` only on pages that form an ordered series. The section'
To add a new topic, copy an existing topic's `_index.md` into a new directory under `content/documentation/`. Update its title, descriptions, weight, icon, banner links, and `guide-cards` section path. Retain `partition: learn`, `learning_kind: guides`, their `cascade` defaults, and `layout: guides`. The overview and sidebar discover the new topic automatically; `layout: guides` also generates its Markdown directory.
When moving an existing page into a guide topic, preserve its original date, add its former URL to `aliases`, add an explicit redirect for its former `index.md` URL in `static/_redirects`, and update internal links. Hugo aliases only generate HTML redirects.
When moving an existing page into a guide topic, preserve its original date, add its former URL to `aliases`, add a wildcard redirect in `static/_redirects` (`/old-path/* /new-path/:splat 301!`), and update internal links. The wildcard covers HTML and Markdown, and `301!` takes precedence over Hugo's generated alias files. Put specific page redirects before broader section redirects.
#### Tutorials & Examples
+18 -16
View File
@@ -88,22 +88,24 @@
# ACORN blog post converted into an internals article
/blog/filtered-vector-search-acorn/ /articles/filtered-vector-search-acorn/ 301
# Preserve Markdown URLs for pages moved into Guides (Hugo aliases cover HTML only)
/articles/before-tuning-a-qdrant-collection/index.md /documentation/search-tuning/before-tuning-a-qdrant-collection/index.md 301
/articles/bulk-uploads-in-qdrant/index.md /documentation/production-patterns/bulk-data-import/index.md 301
/articles/candidate-depth/index.md /documentation/search-tuning/candidate-depth/index.md 301
/articles/how-to-choose-an-embedding-model/index.md /documentation/search-patterns/choose-embedding-model/index.md 301
/articles/how-to-tune-hybrid-search/index.md /documentation/search-tuning/how-to-tune-hybrid-search/index.md 301
/articles/hybrid-search/index.md /documentation/search-tuning/hybrid-search/index.md 301
/articles/memory-tiers-in-qdrant-what-to-use-and-when/index.md /documentation/production-patterns/memory-tiers/index.md 301
/articles/multitenancy/index.md /documentation/production-patterns/multitenant-search/index.md 301
/articles/vector-search-filtering/index.md /documentation/search-patterns/vector-search-filtering/index.md 301
/articles/when-a-reranker-is-worth-it/index.md /documentation/search-tuning/when-a-reranker-is-worth-it/index.md 301
/articles/when-your-collection-outgrows-ram/index.md /documentation/search-tuning/when-your-collection-outgrows-ram/index.md 301
/documentation/improve-search/index.md /documentation/search-quality/index.md 301
/documentation/improve-search/pipeline-output-quality/index.md /documentation/search-quality/pipeline-output-quality/index.md 301
/documentation/improve-search/query-decomposition/index.md /documentation/search-patterns/query-decomposition/index.md 301
/documentation/improve-search/retrieval-relevance/index.md /documentation/search-quality/retrieval-relevance/index.md 301
# Permanent redirects for pages moved into Guides (HTML and Markdown).
# Force redirects so generated Hugo alias files cannot shadow the HTTP 301.
# Keep specific page moves before the Improve Search section fallback.
/articles/before-tuning-a-qdrant-collection/* /documentation/search-tuning/before-tuning-a-qdrant-collection/:splat 301!
/articles/bulk-uploads-in-qdrant/* /documentation/production-patterns/bulk-data-import/:splat 301!
/articles/candidate-depth/* /documentation/search-tuning/candidate-depth/:splat 301!
/articles/how-to-choose-an-embedding-model/* /documentation/search-patterns/choose-embedding-model/:splat 301!
/articles/how-to-tune-hybrid-search/* /documentation/search-tuning/how-to-tune-hybrid-search/:splat 301!
/articles/hybrid-search/* /documentation/search-tuning/hybrid-search/:splat 301!
/articles/memory-tiers-in-qdrant-what-to-use-and-when/* /documentation/production-patterns/memory-tiers/:splat 301!
/articles/multitenancy/* /documentation/production-patterns/multitenant-search/:splat 301!
/articles/vector-search-filtering/* /documentation/search-patterns/vector-search-filtering/:splat 301!
/articles/when-a-reranker-is-worth-it/* /documentation/search-tuning/when-a-reranker-is-worth-it/:splat 301!
/articles/when-your-collection-outgrows-ram/* /documentation/search-tuning/when-your-collection-outgrows-ram/:splat 301!
/documentation/improve-search/pipeline-output-quality/* /documentation/search-quality/pipeline-output-quality/:splat 301!
/documentation/improve-search/query-decomposition/* /documentation/search-patterns/query-decomposition/:splat 301!
/documentation/improve-search/retrieval-relevance/* /documentation/search-quality/retrieval-relevance/:splat 301!
/documentation/improve-search/* /documentation/search-quality/:splat 301!
# Agent Skills moved under the Agentic Tools hub. The page's `aliases:` front
# matter already covers the HTML, but Hugo writes an alias as index.html with