最新版本段策略

latest_version_segment_strategy键控制包含实际版本的可发布URL与包含符号版本的URL之间的替换和重定向方向。正如键的名称所示,所选策略仅适用于组件版本的最新版本或最新预发布版本。

latest_version_segment_strategy键

latest_version_segment_strategy键是可选的。它在playbook中的urls键下配置。还必须设置latest_version_segment键latest_prerelease_version_segment键,否则Antora会停用指定的策略,因为在URL中没有符号版本可以替换实际版本。指定的策略和符号版本仅适用于站点中每个组件的最新版本或最新预发布版本。所有其他组件版本的URL使用URL的版本段中的实际版本。

示例1. antora-playbook.yml
urls: (1)
  latest_version_segment_strategy: redirect:to (2)
  latest_prerelease_version_segment: next (3)
键入父键 urls,后跟冒号( :),然后按 Enter转到新行。 键入 latest_prerelease_version_segment,后跟冒号和空格( : ),然后键入您的符号版本值。此示例使用最新预发布版本段的符号版本 next
1
2 latest_version_segment_strategy键必须嵌套在urls键下。键入latest_version_segment_strategy,后跟冒号和空格(: ),然后键入您希望Antora使用的内置策略值,然后按Enter。此示例使用值redirect:to
3

latest_version_segment_strategy键接受以下内置值:

redirect:from

设置从使用符号版本的URL重定向到使用实际版本的URL。实际版本由最新组件版本的页面和资产URL中的latest_version_segment键或latest_prerelease_version_segment键指定的符号版本替换。当重定向设施为static时,此策略当前被忽略。

redirect:to

设置从使用实际版本的URL重定向到使用符号版本的URL。实际版本由最新组件版本的页面和资产URL中的latest_version_segment键或latest_prerelease_version_segment键指定的符号版本替换。当重定向设施为static时,此策略会透明地更改为replace

replace

默认。实际版本由最新组件版本的页面和资产URL中的latest_version_segment键或latest_prerelease_version_segment键指定的符号版本替换。当未设置latest_version_segment_strategy键时,但在playbook中为latest_version_segment键或latest_prerelease_version_segment键分配了值时,replace是默认值。

当策略为redirect:toredirect:from时,Antora会创建临时重定向(302)。规则和重定向配置文件的格式由您使用redirect_facility键指定的重定向设施确定。请注意,当playbook或CLI中未定义redirect_facility键时,Antora会在运行时将static值分配给该键。由于创建临时重定向规则只有Web服务器才能做到,因此在使用静态重定向设施时,将忽略redirect:from策略,而redirect:to策略实际上变为replace策略。

如果latest_version_segment_strategy键的值为redirect:from,则latest_version_segmentlatest_prerelease_version_segment的值不能为空。这一限制是因为从父文件夹重定向可能会阻止访问其他版本。

自动启用替换策略

replace是您首选的策略时,只要在playbook中为latest_version_segment键或latest_prerelease_version_segment键分配一个值,您就不需要设置latest_version_segment_strategy键。

示例2. 在运行时默认使用替换
  # ...
urls:
  latest_version_segment: stable
content:
  # ...

当Antora读取示例2中的playbook并检测到latest_version_segment键已设置并分配了一个值,但latest_version_segment_strategy键未设置时,Antora会在运行时自动设置latest_version_segment_strategy并分配replace。同样,如果只设置并分配了latest_prerelease_version_segment键的值,Antora会在运行时自动设置latest_version_segment_strategy并分配replace

重定向到符号版本的URL

本节探讨使用redirect:to策略重定向URL,将使用最新组件版本的实际版本的URL重定向到使用符号版本的URL。本节中的示例使用组件版本描述文件中定义的组件版本,示例分别在示例3示例4中展示。 示例3定义了一个组件版本,组件名称为colorado,版本为5.2

示例3. 定义colorado 5.2组件版本的组件版本描述文件(antora.yml文件)
name: colorado
version: '5.2' (1)
1 antora.yml中的version键定义了组件的实际版本为5.2

示例4定义了一个组件版本,名称为colorado,版本为5.6

示例4. 定义colorado 5.6组件版本的组件版本描述文件(antora.yml文件)
name: colorado
version: '5.6' (1)
1 antora.yml中的version键定义了组件的实际版本为5.6

这两个组件版本都有一个名为tour.adoc的页面,属于模块get-started

现在,让我们为最新组件版本分配一个最新版本段策略和最新版本URL段。这些信息通过您站点的playbook文件提供给Antora。 latest_version_segment_strategylatest_version_segment键在playbook文件中配置(而不是组件版本描述文件),位于urls键下。 示例5显示了在playbook文件中定义这些键。

示例5. Playbook(antora-playbook.yml文件)定义最新版本段策略
site:
  title: The Ranges
  url: https://docs.example.com
urls:
  latest_version_segment_strategy: redirect:to (1)
  latest_version_segment: current (2)
  redirect_facility: nginx (3)
content:
# ...
1 Antora在生成最新组件版本URL的重定向规则时将使用redirect:to策略。
2 Antora将在最新组件版本的URL中用符号版本current替换实际版本。
3 Antora将生成一个nginx重定向文件,并将其放置在生成站点的根目录下的.etc/nginx/rewrite.conf

假设示例3示例4是站点中唯一的组件版本,Antora将识别colorado 5.6作为colorado组件的最新版本。Antora根据其语义和命名版本排序规则确定最新组件版本和版本顺序。

示例6所示,版本段使用实际版本,因为colorado 5.2不是colorado组件的最新版本。

示例6. colorado 5.2 tour.adoc页面的URL
https://docs.example.com/colorado/5.2/get-started/tour.html

然而,在示例7中,版本段使用符号版本current,因为colorado 5.6colorado组件的最新版本。

示例7. colorado 5.6 tour.adoc页面的URL
https://docs.example.com/colorado/current/get-started/tour.html

除了在最新组件版本的URL中用符号版本替换实际版本外,Antora还会为使用实际版本的URL和使用符号版本的URL之间设置临时重定向。在示例5中的playbook将redirect_facility键分配给了nginx值,因此Antora将重定向规则写入一个名为rewrite.conf的nginx重写配置文件,并将其放置在站点的.etc/nginx/rewrite.conf中。对于最新组件版本的实际版本的URL的任何请求都会重定向到符号版本的URL。例如,如果请求https://docs.example.com/colorado/5.6/get-started/tour.html,该URL将重定向到https://docs.example.com/colorado/current/get-started/tour.html

当站点添加新组件版本时会发生什么?

继续在上一节中提出的情景,让我们探讨当站点添加新组件版本时会发生什么。 示例8定义了一个组件版本,名称为colorado,实际版本为6.0

示例8. 定义colorado 6.0组件版本的组件版本描述文件(antora.yml文件)
name: colorado
version: '6.0'

站点使用与示例5中相同的playbook。在生成过程中,Antora确定colorado组件的最高版本为版本6.0,因此colorado 6.0成为colorado组件的最新版本。使用示例3colorado 5.2)、示例4colorado 5.6)、示例8colorado 6.0)中定义的组件版本和示例5中的playbook,Antora为每个组件版本中的tour.adoc页面构建以下URL。

示例9显示了组件版本colorado 5.2tour.adoc页面的URL保持不变。

示例9. colorado 5.2 tour.adoc页面的URL
https://docs.example.com/colorado/5.2/get-started/tour.html

与前一节中colorado 5.6的URL不同,示例10显示了tour.adoc的版本段现在包含实际版本,因为colorado 5.6不再是colorado组件的最新版本。

示例10. colorado 5.6 tour.adoc页面的URL
https://docs.example.com/colorado/5.6/get-started/tour.html

Antora也不会为使用5.6的URL设置临时重定向到current的URL。对于请求https://docs.example.com/colorado/5.6/get-started/tour.html,将按原样提供服务。

示例11中,版本段使用符号版本current,因为colorado 6.0colorado组件的最新版本。

示例11. colorado 6.0 tour.adoc页面的URL
https://docs.example.com/colorado/current/get-started/tour.html

Antora为使用最新组件版本的实际版本6.0的URL设置新的临时重定向,并将其重定向到符号版本的URL。例如,如果请求https://docs.example.com/colorado/6.0/get-started/tour.html,该URL将重定向到https://docs.example.com/colorado/current/get-started/tour.html