Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/waddou/redirect-brain/releases/download/v1.0.0/redirect-brain-1.0.0.zipDécidez où mène une ancienne URL avant de supprimer l'article qui se trouvait derrière.
Un plugin WordPress pour les sites qui ont dix ans et des articles qui n'en valent plus la peine. Supprimer un article est facile ; ce qui l'est moins, c'est que son URL reste indexée, reste liée depuis l'extérieur, et reste visitée. Supprimer sans réfléchir, c'est envoyer chacun de ces visiteurs dans un mur.
- Auteur : Aroua Wadie — moncompte.org
- Licence : GPL-2.0-or-later
- Prérequis : WordPress 5.8+, PHP 7.4+
Ce que fait le plugin
| Règles de redirection | 301, 302, 307, 308, plus 410 Gone et 404 quand le contenu ne reviendra vraiment pas. |
| Trois modes de correspondance | Exacte, joker * pour des sections entières, expression régulière quand rien d'autre ne suffit. |
| Journal des 404 exploitable | Une ligne par URL morte distincte, triée par nombre de visiteurs touchés. Un clic la transforme en redirection. |
| Suggestion au bon moment | Un article part à la corbeille : une notice apparaît avec son ancien chemin pré-rempli. Rien n'est créé sans votre accord. |
| Import / export CSV | Pour les jours où vous avez trois cents URLs à traiter. |
Pourquoi ça ne coûte rien
C'est la décision d'architecture qui structure tout le reste.
Une règle ordinaire n'est consultée qu'une fois que WordPress a déjà conclu à une 404. Sur toutes les pages de votre site qui fonctionnent encore — c'est-à-dire la quasi-totalité — le plugin ne fait aucune requête et aucun traitement.
Les règles marquées « appliquer même si l'URL existe encore » sont traitées à part, dans une liste minuscule et vide sur la plupart des sites. Vous ne payez la fonctionnalité que si vous vous en servez.
Installation
wp-content/plugins/redirect-brain/
Copiez le dossier, activez le plugin, ouvrez Redirect Brain dans le menu d'administration. Les tables sont créées à l'activation.
Désactiver le plugin laisse vos règles intactes. Seule la suppression depuis l'écran Extensions les efface.
Utilisation
Le cas courant : un article obsolète
- Vous mettez l'article à la corbeille.
- Une notice apparaît : « /vieil-article/ a perdu l'article qui se trouvait derrière. Où doivent aller les visiteurs ? »
- Vous saisissez la cible, choisissez 301, vous validez. Terminé.
Si vous préférez ne rien proposer, la cible peut rester vide avec un code 410 Gone : c'est la façon correcte de dire à Google que le contenu a été supprimé volontairement et qu'il peut cesser de revenir.
Le cas volumineux : une catégorie entière
Une règle joker suffit :
Source : /ancienne-categorie/*
Cible : /nouvelle-categorie/*
Code : 301
L'astérisque de la source capture la fin du chemin, celui de la cible la réinjecte. /ancienne-categorie/mon-article/ part donc vers /nouvelle-categorie/mon-article/.
Le cas tordu : une structure de permaliens abandonnée
Une règle regex — sans délimiteurs, les groupes capturés reviennent en $1, $2 :
Source : ^/blog/[0-9]{4}/[0-9]{2}/(.*)$
Cible : /$1
Code : 301
Repartir des vraies 404
L'écran 404 liste les URLs mortes que vos visiteurs ont réellement demandées, la plus coûteuse en premier. C'est la meilleure liste de travail possible : elle est fondée sur du trafic constaté, pas sur des suppositions. Chaque ligne offre Créer une redirection (le chemin est pré-rempli) et Ignorer, pour écarter le bruit.
Format CSV
Colonnes attendues à l'import, et produites à l'export :
source, target, status_code, match_type, is_active, is_forced, ignore_query, priority, notes
Seule source est obligatoire ; le reste retombe sur les valeurs par défaut définies dans Outils. Une ligne dont la source existe déjà met à jour la règle au lieu d'échouer — vous pouvez donc corriger un fichier et le réimporter.
L'import produit un rapport ligne par ligne : créées, mises à jour, rejetées avec le motif du rejet.
Architecture
redirect-brain.php amorçage, en-tête, activation
uninstall.php purge propre à la suppression
includes/
class-rb-installer.php schéma, migrations versionnées, réglages
class-rb-matcher.php logique pure : (chemin, index) → règle | null
class-rb-repository.php CRUD et validation des règles
class-rb-index.php index compilé et son invalidation
class-rb-router.php résolution en deux étages, envoi des en-têtes
class-rb-log-404.php journal agrégé
class-rb-csv.php import / export
class-rb-post-watcher.php capture de l'URL avant suppression
class-rb-plugin.php câblage des hooks — le seul fichier qui en contient
admin/ écrans, WP_List_Table, styles
languages/ .pot, fr_FR
bin/make-pot.sh régénération des catalogues de traduction
tests/test-matcher.php vérification autonome du matcher
Chaque classe a une responsabilité unique. RB_Matcher est volontairement dépourvu de toute dépendance à WordPress : c'est la pièce où une erreur subtile coûterait le plus cher, donc c'est celle qu'on peut vérifier seule.
php tests/test-matcher.php # 33 assertions, ni WordPress ni base de données
./bin/make-pot.sh # ré-extrait les chaînes et recompile le .mo
Points d'extension
| Hook | Rôle |
|---|---|
redirect_brain_capability |
Capability requise pour gérer les redirections (manage_options par défaut). |
redirect_brain_should_run |
Court-circuiter le routeur sur certaines requêtes. |
redirect_brain_target |
Modifier la destination juste avant l'envoi. |
redirect_brain_matched |
Action déclenchée quand une règle répond. |
redirect_brain_watch_post |
Décider si l'URL d'un article mérite une suggestion. |
redirect_brain_ignored_extensions |
Extensions de fichiers exclues du journal. |
redirect_brain_bot_pattern |
Motif de détection des robots. |
Détails qui comptent
- Correspondance insensible à la casse. Un site de dix ans reçoit autant de
/Vieil-Article/que de/vieil-article/, et les deux doivent atterrir au même endroit. - Slash final normalisé.
/vieil-articleet/vieil-article/sont la même règle. Un chemin dont le dernier segment ressemble à un nom de fichier (/sitemap.xml) est laissé tel quel. - Anti-boucle. Une règle dont la cible retombe sur sa propre source est refusée à l'enregistrement, et une requête ne peut être redirigée qu'une seule fois.
- Query string. Ignorée par défaut, pour que les paramètres de tracking n'empêchent pas une règle de matcher. Désactivable règle par règle.
- Sécurité. Nonce et capability sur chaque écriture,
$wpdb->preparepartout, échappement en sortie, validation des expressions régulières avant enregistrement, refus des cibles enjavascript:oudata:.
Licence
GPL-2.0-or-later. Voir LICENSE.
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.