跳到主要内容

📦 plugin-client-redirects

Docusaurus 插件用于生成客户端重定向

该插件将在您的静态站点中写入额外的 HTML 页面,使用 JavaScript 将用户重定向到现有的 Docusaurus 页面。

仅在生产环境中

此插件在开发环境中始终处于非活动状态,仅在生产环境中激活,因为它在构建输出上工作。

注意

尽可能使用服务器端重定向会更好。

在使用此插件之前,您应该查看托管提供商是否已提供此功能。

安装

npm install --save @docusaurus/plugin-client-redirects

配置

接受的字段:

选项类型默认值描述
fromExtensionsstring[][]重定向后要从路由中删除的扩展名。
toExtensionsstring[][]重定向后要附加到路由的扩展名。
redirectsRedirectRule[][]重定向规则列表。
createRedirectsCreateRedirectsFnundefined用于创建重定向规则的回调函数。Docusaurus 会针对它创建的每个路径查询此回调,并使用其返回值输出更多路径。
备注

此插件还将读取 siteConfig.onDuplicateRoutes 配置,以调整在同一位置发出多个文件时的日志级别。

类型

RedirectRule

type RedirectRule = {
to: string;
from: string | string[];
};
备注

"from"和"to"的概念在此插件中是核心。"from"表示您想要_创建_的路径,即将写入的额外 HTML 文件;"to"表示您想要重定向_到_的路径,通常是 Docusaurus 已知的路由。

这就是为什么同一个"to"可以有多个"from":我们将创建多个 HTML 文件,它们都重定向到同一个目的地。另一方面,一个"from"永远不能有多个"to":写入的 HTML 文件需要有一个确定的目的地。

CreateRedirectsFn

// 参数 `path` 是 Docusaurus 已创建的路由。它可以被视为"to",
// 而您的返回值是"from"。返回一个虚假值将不会为此特定路径创建任何重定向页面。
type CreateRedirectsFn = (path: string) => string[] | string | null | undefined;

示例配置

以下是一个配置示例:

docusaurus.config.js
export default {
plugins: [
[
'@docusaurus/plugin-client-redirects',
{
fromExtensions: ['html', 'htm'], // /myPage.html -> /myPage
toExtensions: ['exe', 'zip'], // /myAsset -> /myAsset.zip (如果后者存在)
redirects: [
// /docs/oldDoc -> /docs/newDoc
{
to: '/docs/newDoc',
from: '/docs/oldDoc',
},
// 从多个旧路径重定向到新路径
{
to: '/docs/newDoc2',
from: ['/docs/oldDocFrom2019', '/docs/legacyDocFrom2016'],
},
],
createRedirects(existingPath) {
if (existingPath.includes('/community')) {
// 从 /docs/team/X 重定向到 /community/X 和从 /docs/support/X 重定向到 /community/X
return [
existingPath.replace('/community', '/docs/team'),
existingPath.replace('/community', '/docs/support'),
];
}
return undefined; // 返回一个虚假值:不创建重定向
},
},
],
],
};