使用页面别名设置URL重定向

您可以使用Antora内置的page-aliases属性从旧页面重定向到新页面。当您删除页面、重命名页面文件或将页面移动到不同的模块或组件时,此页面属性非常有用。使用page-aliases属性,页面可以声明一个或多个其他页面的身份。然后,Antora将重定向这些页面的URL到定义别名的页面。

页面别名和批量URL重定向

页面别名旨在解决页面重命名或移动问题,特别是在组件版本内。它们不是通用的URL路由器。虽然它们可以用于在组件或组件版本之间创建重定向,但您需要谨慎使用此功能,否则可能会变得非常混乱。

如果您删除大量页面,例如删除或重命名组件或组件版本,并且希望保留现有的URL,则不应尝试使用页面别名。页面别名不是为提供批量URL重定向而设计的。相反,我们强烈建议您在删除或重命名组件或组件版本时使用您的Web服务器或主机提供的路由器。您可以在发布过程中使用单独的步骤,或者使用Antora扩展来实现。

page-aliases属性

page-aliases属性设置在目标页面的页面头部中,使用一个属性条目目标页面指的是您要将源页面重定向到的页面。 源页面指的是您要从中重定向的已删除、重命名或移动的页面(即要声明的页面)。在目标页面中,将源页面的资源ID(在删除、重命名或移动之前的资源ID)分配给page-aliases属性。可以在属性中以逗号分隔的列表形式分配多个资源ID。

示例1. 目标页面的头部
= 目标页面的标题
:page-aliases: 源页面文件名.adoc, 版本@组件:模块:源页面文件名.adoc

您可以使用行继续(在行末加上一个空格和反斜杠)将此列表拆分成多行:

示例2. 跨多行拆分的页面别名
= 目标页面的标题
:page-aliases: 源页面文件名.adoc, \
版本@组件:模块:源页面文件名.adoc

Antora会计算源页面资源ID的URL,并生成重定向信息,使源页面URL重定向到目标页面URL。未在分配给page-aliases的资源ID中指定的任何坐标,例如版本或组件,将从目标页面的坐标中插值。重定向信息的生成输出格式由您选择的重定向设施确定。

分配给page-aliases属性的资源ID可以在xref中使用。因此,如果您删除、重命名或移动页面,您无需在源文件中更新任何对它的引用。

页面别名限制

page-aliases属性只能应用于页面。部分页面、示例、图片和附件无法使用别名。虽然分配给page-aliases的资源ID在xref中有效,但参考UI中的页面版本选择器不会将源页面的先前版本连接到目标页面。

为重命名的页面创建重定向

如果您将源页面的文件名从old-name.adoc更改为new-name.adoc,请在其头部将文件的先前资源ID分配给page-aliases

示例3. new-name.adoc
= 目标页面的标题
:page-aliases: old-name.adoc

这将导致https://base-url.com/component/version/module/old-name.html被重定向到https://base-url.com/component/version/module/new-name.html。未在old-name.adoc资源ID中指定的版本、组件和模块坐标将从目标页面的坐标中插值。或者,如果您在playbook中的html-extension-style键上分配了indexifyhttps://base-url.com/component/version/module/old-name/将重定向到https://base-url.com/component/version/module/new-name/

为移动的页面创建重定向

当页面从一个模块移动到同一组件中的另一个模块时,别名的资源ID需要包含源页面的先前模块坐标。在示例4中,页面source-1.adoc已从module-1移动到module-zmodule-1module-z都是component-1版本5.0中的模块。

示例4. source-1.adoc
= 目标页面的标题
:page-aliases: module-1:source-1.adoc (1)
1 将页面移动到另一个模块时,除文件坐标外,还需指定先前的模块坐标。

现在,Antora将重定向URLhttps://base-url.com/component-1/5.0/module-1/source-1.html到URLhttps://base-url.com/component-1/5.0/module-z/source-1.html

当页面从一个组件移动到另一个组件时,请将源页面的完全限定的先前资源ID分配给page-aliases。在示例5中,页面source-w.adoc已从component-8版本1.4module-u移动到component-delta版本3.0ROOT

示例5. source-w.adoc
= 目标页面的标题
:page-aliases: 1.4@component-8:module-u:source-w.adoc

这将导致URLhttps://base-url.com/component-8/1.4/module-u/source-w.html被重定向到https://base-url.com/component-delta/3.0/source-w.html

为已删除的页面创建重定向

有时您只需删除一个页面。在将已删除页面的URL重定向到另一个页面之前,请考虑以下事项:

  • 是否存在一个潜在的目标页面,可以帮助之前使用已删除页面信息的访问者?例如,已删除页面描述了特性A,但特性A已被弃用;特性A的用户现在应该迁移到特性B。

  • 已删除页面是否是高流量页面?如果是,是否有一个相关页面肯定会帮助寻找已删除页面的人?

不应将重定向创建到与已删除页面没有太多共同点的目标页面,因为这通常会让访问者感到沮丧。

如果将已删除页面的URL重定向到另一个页面是合适的,请将已删除页面的ID分配给page-aliases属性,并确保指定必要的坐标。

示例6. 目标页面
= 目标页面的标题
:page-aliases: 源页面文件名.adoc
将已删除页面重定向到站点的主页或项目的起始页面会导致糟糕的用户体验(并且是糟糕的SEO实践)。这种做法会让访问者感到困惑,因为他们可能意识不到他们正在寻找的页面已经不存在。在没有高度相关的目标页面可重定向已删除页面的情况下,最好将访问者引导至自定义的404页面。