📦 plugin-client-redirects
Docusaurus Plugin to generate client-side redirects.
Ce plugin écrirera des pages HTML supplémentaires sur votre site statique qui redirige l'utilisateur vers vos pages Docusaurus existantes avec JavaScript.
This plugin is always inactive in development and only active in production because it works on the build output.
Il est préférable d'utiliser les redirections côté serveur chaque fois que cela est possible.
Avant d'utiliser ce plugin, vous devez vérifier si votre fournisseur d'hébergement n'offre pas cette fonctionnalité.
Installation
- npm
- Yarn
- pnpm
npm install --save @docusaurus/plugin-client-redirects
yarn add @docusaurus/plugin-client-redirects
pnpm add @docusaurus/plugin-client-redirects
Configuration
Champs acceptés :
Option | Type | Par défaut | Description |
---|---|---|---|
fromExtensions | string[] | [] | Les extensions à retirer de la route après redirection. |
toExtensions | string[] | [] | Les extensions à ajouter à la route après redirection. |
redirects | RedirectRule[] | [] | La liste des règles de redirection. |
createRedirects | CreateRedirectsFn | undefined | Un callback pour créer une règle de redirection. Docusaurus interroge ce callback pour chaque chemin qu'il a créé, et utilise sa valeur de retour pour produire d'autres chemins. |
This plugin will also read the siteConfig.onDuplicateRoutes
config to adjust its logging level when multiple files will be emitted to the same location.
Types
RedirectRule
type RedirectRule = {
to: string;
from: string | string[];
};
L'idée de "from" et "to" est primordiale dans ce plugin. "From" means a path that you want to create, i.e. an extra HTML file that will be written; "to" means a path to want to redirect to, usually a route that Docusaurus already knows about.
C'est pourquoi vous pouvez avoir plusieurs "from" pour le même "to" : nous allons créer plusieurs fichiers HTML qui redirigent tous vers la même destination. A l'inverse, un "from" ne peut jamais avoir plus d'un "to" : le fichier HTML écrit doit avoir une destination déterminée.
CreateRedirectsFn
// The parameter `path` is a route that Docusaurus has already created. It can
// be seen as the "to", and your return value is the "from". Returning a falsy
// value will not create any redirect pages for this particular path.
type CreateRedirectsFn = (path: string) => string[] | string | null | undefined;
Example configuration
Voici un exemple de configuration :
module.exports = {
plugins: [
[
'@docusaurus/plugin-client-redirects',
{
fromExtensions: ['html', 'htm'], // /myPage.html -> /myPage
toExtensions: ['exe', 'zip'], // /myAsset -> /myAsset.zip (if latter exists)
redirects: [
// /docs/oldDoc -> /docs/newDoc
{
to: '/docs/newDoc',
from: '/docs/oldDoc',
},
// Redirect from multiple old paths to the new path
{
to: '/docs/newDoc2',
from: ['/docs/oldDocFrom2019', '/docs/legacyDocFrom2016'],
},
],
createRedirects(existingPath) {
if (existingPath.includes('/community')) {
// Redirect from /docs/team/X to /community/X and /docs/support/X to /community/X
return [
existingPath.replace('/community', '/docs/team'),
existingPath.replace('/community', '/docs/support'),
];
}
return undefined; // Return a falsy value: no redirect created
},
},
],
],
};