Gérer les redirections d’un site WordPress

Gérer les redirections d’un site WordPress

Durant la vie d’un site web, on est amené à modifier des adresses (url) web et il faut aider les internautes (et les moteurs de recherche) à s’y retrouver. C’est pour cela que l’on a inventé les redirections 301 (permanentes) voire 302 (temporaires). Nous allons voir ici comment utiliser l’extension Redirection, de John Godley.

Cet article a été mis à jour le 10 novembre 2017.

Redirections SEO !

geralt / Pixabay

Pourquoi faire des redirections ?

Les moteurs de recherche passent leur temps à indexer des contenus, des sites font des liens vers des contenus, des internautes copient et collent une adresse web… Si vous supprimez ou modifiez une url (d’un article, d’une page, d’une catégorie, …), tous ces liens archivés par des tiers vont aboutir à une page en « erreur 404 », un code HTTP qui indique que l’adresse recherchée n’existe pas.

Afin de simplifier la vie des internautes, mais aussi de conserver un bon référencement dans les moteurs de recherche, il faut indiquer quelle est l’adresse de remplacement de celle qui ne fonctionne plus. C’est ce qu’on appelle une redirection. Et elle peut être permanente (301), ou temporaire (302).

Comment faire des redirections ?

On peut les écrire directement dans le fichier .htaccess de notre site WordPress mais ça présente des inconvénients :

  • il faut connaître la syntaxe précise, ce qui n’est pas toujours simple ;
  • La lisibilité n’est pas très bonne et on risque des erreurs ;
  • Mais surtout, si on déplace le site, on risque d’oublier de déplacer aussi les redirections dans le .htaccess créé dans le nouvel hébergement.

C’est à cause de la dernière raison que j’ai décidé d’utiliser une extension WordPress pour les redirections. Le gros avantage aussi est qu’un administrateur compétent, mais sans expérience de code, peut aussi définir des redirections.

Utiliser l’extension Redirection, de John Godley

L’extension Redirection a de très bons avis, est mise à jour régulièrement et est utilisée par des centaines de milliers de sites.

Je l’ai donc installée et activée sur un site récemment modifié lourdement.

La notion de module

L’extension peut utiliser 3 « modules » pour réaliser les redirections :

  • module « WordPress », qui a l’avantage d’être simple (pas besoin d’un accès à .htaccess) mais sollicite plus les ressources du site ;
  • module « Apache », qui est plus rapide. Mais attention, elle ne fonctionne pas toujours (voir plus bas) ;
  • module « Nginx » – je n’ai pas cherché à l’utiliser, je ne crois pas que mon serveur utilise Nginx.

La page Redirection, du développeur de l’extension (en anglais) explique plus en détail ce que sont ces modules.

J’ai créé deux groupes de redirection (onglet Groups du menu « outils » >> « Redirections »), l’un, intitulé « redirections WP », est associé au module WordPress, l’autre, « Redirection Apache », est associé au module Apache.

Créer des redirection (quel que soit le groupe)

On peut utiliser un fichier CSV ou entrer chaque redirection à la main. Dans tous les cas, une syntaxe précise est à adopter.

La syntaxe à adopter

Imaginons que vous souhaitez rediriger https://mon-site/test-old  vers https://mon-site/test-new .

Le problème, c’est que si l’internaute tape https://mon-site/test-old/ , avec un « / » final, la redirection ne se fera que si vous avez bien défini l’url source.

Il faudra écrire que la source est /test-old/? , avec « /? » à la fin et cocher la case « Regex » (Regular Expression). Cette expression dit qu’il faut rediriger qu’il y ait le / à la fin ou non.

Avec un fichier CSV

Pour créer les redirections, j’ai importé un fichier CSV (créé avec Libre Office Calc, car Microsoft Excel gère très mal l’encodage et les caractères de séparation des CSV). Ce fichier CSV contenait des éléments comme suit (elles fonctionnent mais évidemment je ne les ai créées que pour l’exemple) :

source target regex type code match hits title
/test-old/? /test-new 1 url 301 url 0
/old-page/? https://autre-site.com/new-page 1 url 301 url 0

J’ai défini le groupe pour l’ensemble des redirections du fichier CSV durant l’importation.

A la main

La deuxième redirection s’affiche comme ça si on la saisit à la main :

Régler une redirection 301 avec l'extension Redirection

Régler une redirection 301 avec l’extension Redirection

 

Redirection avec le module WordPress

Ca fonctionne parfaitement. Toutes mes redirections utilisant le module WordPress se font à la perfection.

Redirection avec le module Apache

Dans le menu WordPress « outils » >> « Redirections », on voit un onglet « options ».

Il faut y définir le chemin vers le fichier .htaccess de l’hébergement. Pour le connaître, je suis allée regarder dans Réglages / WP Super Cache, onglet avancé et « Cache Location » est défini comme : /home/clients/2453337d17…073506d/site/wp-content/cache/

Donc dans Outils / redirection, onglet options, je définis Apache Module comme : /home/clients/2453337d17…073506d/site/.htaccess.

J’ai laissé sur « default server » car je préfère que ce soit Infomaniak qui gère l’absence ou la présence de www devant le nom de domaine.

J’ai ensuite créé des redirections exactement comme précédemment. Mon fichier .htaccess est effectivement modifié si je crée une redirection dans le groupe « Redirection Apache » entre /test/ et /cat/bla-bla :

<IfModule mod_rewrite.c>
RewriteRule ^test/$ /cat/bla-bla/ [R=301,L]
</IfModule>

Mais la redirection ne fonctionne pas. L’url monsite/test n’est pas dirigée vers monsite/cat/bla-bla….

J’ai cherché comment régler le module Apache, mais les onglets que je vois sont « Redirects | Groups | Log | 404s | Import/Export | Options | Support ». Je ne peux pas accéder à un onglet « Module » qui me permettrait de régler Apache…

J’ai déposé une demande d’aide sur le support de l’extension et j’ai reçu une réponse 2 jours après ma demande. Voici la solution, en attendant une mise à jour de l’extension.

J’utilise l’extension WP Super Cache pour accélerer mes sites. Elle écrit également des informations dans le fichier .htaccess.

John Godley, l’auteur de l’extension Redirection m’a proposé de corriger à la main le fichier .htaccess et d’y  déplacer les éléments relatifs à la redirection avant les éléments liés à WP Super Cache.

Donc dans le fichier .htaccess, il faut déplacer les éléments

# Created by Redirection

CODE

# End of Redirection

avant les éléments

# BEGIN WPSuperCache 

Code

# END WPSuperCache

Et maintenant ça fonctionne correctement !

Et maintenant ?

Les redirections fonctionnent correctement.