vendredi 25 septembre 2026

À propos

Contact

Tips

Redirections propres sous WordPress sans multiplier les plugins

Redirections 301, gestion des URL cassées, migration en masse : les méthodes fiables pour rediriger proprement sans installer de plugin dédié.

Par Clément Hadrot • 9 juillet 2020 • 4 min de lecture • Aucun commentaire
Redirections propres sous WordPress sans multiplier les plugins

Rediriger une URL vers une autre est l’un des besoins les plus fréquents sur un site WordPress : une page renommée, une structure d’URL modifiée après une refonte, une ancienne campagne marketing qu’on ferme. Beaucoup de projets installent un plugin dédié pour ça, souvent avec raison quand il faut une interface pour un client. Mais dans bien des cas, quelques lignes de code suffisent, et évitent une dépendance de plus.

Cet article couvre les trois façons de rediriger proprement sous WordPress : via le hook template_redirect, via le fichier .htaccess pour Apache, et via WP-CLI pour l’automatisation en masse.

Rediriger dynamiquement avec template_redirect

Le hook template_redirect se déclenche juste avant que WordPress ne détermine quel template afficher. C’est l’endroit idéal pour intercepter une requête et rediriger avant que la page ne soit générée.

add_action( 'template_redirect', function() {
    if ( is_404() && '/ancienne-page/' === $_SERVER['REQUEST_URI'] ) {
        wp_safe_redirect( home_url( '/nouvelle-page/' ), 301 );
        exit;
    }
} );

Deux points méritent l’attention ici. D’abord, wp_safe_redirect() plutôt que wp_redirect() : la version « safe » vérifie que la destination appartient à une liste d’hôtes autorisés, ce qui évite qu’une redirection ouverte ne serve de vecteur de phishing. Ensuite, l’appel à exit juste après est indispensable : sans lui, l’exécution du script continue et WordPress peut renvoyer un contenu après avoir déjà envoyé l’en-tête de redirection.

Rediriger un type de contenu entier

Un cas fréquent après une refonte : un type de contenu personnalisé disparaît et ses URL doivent pointer vers une page unique. Une correspondance par expression régulière sur REQUEST_URI fait l’affaire :

add_action( 'template_redirect', function() {
    if ( preg_match( '#^/ancien-produit/([^/]+)/?$#', $_SERVER['REQUEST_URI'] ) ) {
        wp_safe_redirect( home_url( '/catalogue/' ), 301 );
        exit;
    }
} );
L'essentiel à retenir : template_redirect est le hook central pour rediriger dynamiquement ; Une redirection 301 doit toujours utiliser le bon code HTTP ; Les wildcards se gèrent bien dans .htaccess pour Apache

Redirections statiques dans .htaccess

Pour des redirections simples, en nombre limité et qui ne changent jamais, passer par .htaccess évite de charger WordPress inutilement, avec un gain de performance réel sur des sites à fort trafic. Ces règles doivent être placées avant le bloc # BEGIN WordPress généré par le CMS :

Redirect 301 /ancienne-page/ /nouvelle-page/
RedirectMatch 301 ^/blog/2019/(.*)$ /actualites/$1

L’inconvénient : ces règles sont statiques et ne peuvent pas consulter la base de données WordPress. Elles conviennent bien pour des redirections d’URL fixes issues d’une refonte, mais pas pour une logique dépendant du contenu.

Rediriger en masse avec WP-CLI

Quand une migration touche des centaines d’URL, générer les redirections à la main n’est pas réaliste. Un script WP-CLI, couplé à un fichier CSV listant les anciennes et nouvelles URL, permet d’automatiser la mise à jour d’une table de correspondance :

wp eval-file redirections-migration.php --path=/var/www/monsite

Le fichier redirections-migration.php peut alors lire le CSV et enregistrer chaque correspondance dans une option ou une table dédiée, consultée ensuite par le hook template_redirect vu plus haut.

Les erreurs courantes à éviter

  • Utiliser une redirection 302 (temporaire) là où une 301 (permanente) s’impose, ce qui dilue le référencement de l’ancienne page vers la nouvelle
  • Créer une chaîne de redirections (A vers B, B vers C) au lieu de rediriger directement A vers C
  • Oublier exit après wp_redirect(), ce qui peut laisser fuiter du contenu après l’en-tête HTTP
  • Rediriger vers une URL non fiable sans passer par wp_safe_redirect()

Vérifier une redirection correctement

Pour vérifier qu’une redirection renvoie bien le code attendu, la commande curl avec l’option -I affiche uniquement les en-têtes de réponse, sans suivre la redirection :

curl -I https://example.com/ancienne-page/

La ligne HTTP/1.1 301 Moved Permanently doit apparaître, suivie d’un en-tête Location pointant vers la bonne URL de destination.

Une redirection 302 qui traîne six mois sur une page migrée n’a plus rien de temporaire : c’est un oubli qui coûte du référencement chaque jour qui passe.

En résumé

Pas besoin d’un plugin pour gérer une poignée de redirections stables : template_redirect couvre les cas dynamiques, .htaccess les cas statiques et rapides, WP-CLI l’automatisation en masse lors d’une migration. Un plugin dédié reste pertinent dès qu’un client non technique doit pouvoir ajouter des redirections lui-même depuis l’administration ; en dehors de ce cas, ces trois méthodes suffisent largement et restent bien plus simples à auditer dans le code.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi