目录

plugin-client-redirects

优质
小牛编辑
143浏览
2023-12-01

用于生成 客户端链接跳转 的 Docusaurus 插件。

此插件会为你的静态站点添加额外的 HTML 页面,该页面将利用 JavaScript 将用户重定向到存在的 Docusaurus 页面上。

note

此插件仅用于生产环境的构建。

caution

最好是使用服务器端的重定向功能。

在使用此插件前,你应该查看一下服务提供商是否未提供重定向功能。

安装

  • npm
  • Yarn
npm install --save @docusaurus/plugin-client-redirects
yarn add @docusaurus/plugin-client-redirects

配置

主要使用场景:你希望将 /myDocusaurusPage.html 链接重定向到 /myDocusaurusPage

docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@docusaurus/plugin-client-redirects',
      {
        fromExtensions: ['html'],
      },
    ],
  ],
};

次要使用场景:你希望将 /myDocusaurusPage 链接重定向到 /myDocusaurusPage.html 链接。

docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@docusaurus/plugin-client-redirects',
      {
        toExtensions: ['html'],
      },
    ],
  ],
};

对于自定义的重定向逻辑,请提供自己的 createRedirects 函数。

假设你更改了现有页面的网址,并希望确保旧网址仍然有效:

docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@docusaurus/plugin-client-redirects',
      {
        redirects: [
          {
            to: '/docs/newDocPath', // string
            from: ['/docs/oldDocPathFrom2019', '/docs/legacyDocPathFrom2016'], // string | string[]
          },
        ],
      },
    ],
  ],
};

可以使用函数为每个现有路径创建重定向:

docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@docusaurus/plugin-client-redirects',
      {
        createRedirects: function (existingPath) {
          if (existingPath === '/docs/newDocPath') {
            return ['/docs/oldDocPathFrom2019', '/docs/legacyDocPathFrom2016']; // string | string[]
          }
        },
      },
    ],
  ],
};

最后,可以同时使用所有配置项:

docusaurus.config.js
module.exports = {
  plugins: [
    [
      '@docusaurus/plugin-client-redirects',
      {
        fromExtensions: ['html', 'htm'],
        toExtensions: ['exe', 'zip'],
        redirects: [
          {
            to: '/docs/newDocPath',
            from: '/docs/oldDocPath',
          },
        ],
        createRedirects: function (existingPath) {
          if (existingPath === '/docs/newDocPath2') {
            return ['/docs/oldDocPath2'];
          }
        },
      },
    ],
  ],
};