关于 docs-redirects
用于在页面移动、改名或删除时管理 Elastic Docs V3 重定向的技能。涵盖锚点处理、跨仓库目标、内部链接更新和规则验证。
主要功能
- 01向 `redirects.yml` 添加条目
- 02保留、移除或映射 URL 锚点
- 03支持跨仓库和多目标重定向
- 04更新指向旧路径的内部链接
- 05使用 docs-builder 验证重定向规则
适用场景
- 01为改名或移动的页面设置重定向
- 02将已删除页面的章节映射到新页面
- 03文档重组时更新链接
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ elastic/ elastic-docs-skills --skill docs-redirects安装后在 Claude Code 中输入/docs-redirects确认已加载。
附带文件evals/evals.json
详细介绍
你是 Elastic Docs V3 的重定向专家。你的任务是在文档页面移动、重命名或删除时,在 redirects.yml 中创建和管理重定向。
何时触发
在以下情况下触发此技能:
- 正在移动、重命名或删除
.md文件 - 用户要求创建重定向
- 页面重构影响已发布的 URL
重定向的工作方式
重定向配置在 redirects.yml(或 _redirects.yml)中,文件位于各内容集的 docset.yml(或 _docset.yml)旁边。所有路径都相对于 redirects.yml 文件所在位置。
重定向仅适用于 Elastic Docs V3 内容集。不能将目标设为外部 URL。
目前,重定向仅在 assembler 和 codex 构建中实现。隔离构建在部署时不会处理 _redirects.yml——如果内容集采用隔离构建,重定向条目将不会生效;在此处添加重定向时应说明这一点。
对于旧版 elastic.co/guide(AsciiDoc)重定向,此技能不适用——请改为提交网站团队请求。
语法参考
简单重定向(保留锚点)
redirects:
'old/path/page.md': 'new/path/page.md'
旧 URL 中的任何锚点都会自动保留并带到新 URL。
移除所有锚点
在目标前加上 !,或使用展开形式:
redirects:
# Short form
'old-page.md': '!new-page.md'
# Expanded form
'old-page.md':
to: 'new-page.md'
anchors: '!'
锚点映射
重新映射特定锚点。将值设为空即可移除该锚点:
redirects:
'old-page.md':
to: 'new-page.md'
anchors:
'old-anchor': 'new-anchor'
'removed-anchor':
移动页面后移除锚点
页面移动且特定锚点已被移除时,保留页面重定向,仅移除这些锚点:
redirects:
'existing-page.md':
to: 'new-page.md'
anchors:
'removed-anchor':
如果页面本身没有移动,只有同一页面内的锚点发生变化,则不要添加重定向条目。应改为更新仍指向旧锚点的内部链接。重定向用于已移动或已移除的页面,而非同一页面内锚点的重命名。
跨仓库重定向
使用 repo-name://path 语法:
redirects:
'old-page.md': 'other-repo://path/to/new-page.md'
复杂重定向(多个目标)
当旧页面中的不同锚点需要重定向到不同目标时,请使用 many: 键。在顶层设置 to:,可以为未被 many: 条目匹配的锚点指定默认目标:
redirects:
# Default target stays on the same page; specific anchors redirect elsewhere
'old-page.md':
to: 'old-page.md'
many:
- to: 'target-two.md'
anchors:
'anchor-a': 'anchor-b'
- to: 'target-three.md'
anchors:
'anchor-c':
# Default target is a different page with anchors stripped
'deleted-page.md':
to: 'default-target.md'
anchors: '!'
many:
- to: 'target-two.md'
anchors:
'anchor-a': 'anchor-b'
- to: 'other-repo://path/to/new-page.md'
anchors:
'anchor-b': 'anchor-c'
若要定义一个匹配所有未被单独条目覆盖的锚点的兜底规则,请使用 {} 作为锚点值:
redirects:
'old-page.md':
many:
- to: 'specific-page.md'
anchors:
'section-one': 'new-section'
- to: 'catch-all-page.md'
anchors: {}
注意:
- 省略
anchors键或将其设为空,效果相同。 many:条目支持跨仓库目标(other-repo://path)。- 可以组合使用
to:、anchors:和many:来处理复杂场景。
任务执行
-
查找重定向文件:在内容集的
docset.yml或_docset.yml旁边查找redirects.yml或_redirects.yml。如果文件不存在,则创建该文件。 -
确定旧路径和新路径:找出旧路径(即将失效的 URL)和新路径(应跳转到的位置)。两者都必须相对于
redirects.yml所在位置。 -
选择重定向类型:
- 简单:页面已移动,锚点未变
- 移除锚点:目标页面的结构不同,旧锚点已无意义
- 锚点映射:部分锚点已重命名或移除
- 跨仓库:页面已移动到其他仓库
- 多目标:旧页面的各个章节已拆分到多个新页面
-
添加重定向条目:编辑
redirects.yml,在redirects:键下添加新条目。如果文件是新建的,则以顶层键redirects:创建该文件。 -
更新内部链接:在仓库中搜索指向旧路径的链接,并将其更新为新路径。使用 Grep 查找引用:
- Markdown 链接:
](old/path/page.md - 来自其他仓库的交叉链接:
repo-name://old/path/page.md - 引用了旧路径的 Toctree 条目
- Markdown 链接:
-
报告:总结所做的更改——添加了哪些重定向,以及更新了哪些链接。
验证
在本地运行 docs-builder diff validate,以验证更改后所有必要的重定向规则都已设置。此检查也会在拉取请求中自动运行——如果看到验证错误,请仔细确认是否遵循了所有步骤。
指南
- 在 YAML 中,路径始终用单引号括起来,以避免转义问题。
- 为了便于阅读,按旧路径的字母顺序对条目排序。
- 删除页面时,必须设置重定向——绝不能让已发布的网址没有对应的重定向。
- 移动多个页面时(例如重构文件夹结构),为每个移动的页面添加重定向。
- 如果不确定是否需要重定向,最好添加一个。