Skip to content

Tout pour WordPress, le développement web — et plus encore

🔗 Comment réparer les permaliens WordPress cassés

🔗 Comment réparer les permaliens WordPress cassés

Vous visitez un site, cliquez sur un lien vers un nouvel article et, au lieu du texte, vous voyez une page blanche avec «404 Page Not Found». Une situation familière.

Les Permaliens dans WordPress sont simples à construire, mais se cassent avec une facilité déconcertante. Un plugin défaillant, une mise à jour échouée ou une modification accidentelle du fichier .htaccess, et le site entier se transforme en une collection d’URL cassées. Selon le forum officiel d’assistance WordPress, les erreurs de structure des permaliens figurent parmi les cinq problèmes les plus fréquents.

Voici un algorithme de diagnostic et de réparation, de la réinitialisation rapide des paramètres à l’édition manuelle des configurations serveur. Chaque étape a été testée sur des sites réels. Pas de panique.

💡 Aperçu rapide:

  • Réinitialisez les paramètres de permaliens dans l’administration en un clic: pour la plupart des sites, le problème disparaît instantanément
  • Si la réinitialisation n’a pas fonctionné, renommez .htaccess et réinitialisez à nouveau: WordPress créera un fichier propre avec les règles de réécriture correctes
  • Vérifiez les plugins par élimination: désactivez-les tous en bloc et réactivez-les un par un après chaque réinitialisation des permaliens
  • Sur un serveur Apache, activez manuellement mod_rewrite et ajoutez AllowOverride All à la configuration de l’hôte virtuel

Pourquoi les permaliens WordPress cessent de fonctionner

Un permalien est une URL immuable pour un article, une page ou une catégorie. WordPress stocke la structure des permaliens dans la base de données et sert des URL «propres» via le module mod_rewrite du serveur web Apache. Une rupture à n’importe quel maillon de cette chaîne produit une erreur 404.

L’installation d’un nouveau plugin. Certains plugins interfèrent avec le mécanisme de formation des URL: ils réécrivent .htaccess, ajoutent leurs propres règles de redirection ou entrent en conflit avec des extensions déjà actives. Les plugins SEO, les solutions de cache et les plugins de sécurité sont dans une zone à risque particulière, car ils travaillent tous avec les URL à bas niveau.

La mise à jour du cœur, du thème ou des plugins. Une mise à jour majeure de WordPress ou un changement de version PHP sur l’hébergement rend d’anciens plugins incompatibles. Le résultat est un conflit qui fait planter les règles de réécriture. Vous ne pouvez pas faire l’impasse sur les mises à jour de sécurité, mais avant chaque mise à jour majeure, faites une sauvegarde et vérifiez la compatibilité sur une copie de staging.

Le déplacement d’un site vers un nouveau domaine ou serveur. La migration WordPress est l’une des causes les plus courantes de liens cassés. Les chemins absolus changent, les données sérialisées dans la base de données et les paramètres du serveur web changent. Même l’ajout d’un certificat SSL après la migration peut casser les permaliens, car il nécessite d’éditer .htaccess pour la redirection HTTP→HTTPS. Si vous avez récemment déplacé une installation WordPress dans un sous-répertoire, vérifiez la structure des permaliens immédiatement après la migration.

La restauration d’une sauvegarde. Restaurer un site à partir d’une sauvegarde peut aussi parfois ressusciter d’anciens problèmes. Si la sauvegarde a été faite avant que vous ne configuriez les permaliens, les erreurs 404 reviennent. Même les plugins de sauvegarde avancés ne garantissent pas une restauration parfaite des règles de réécriture après des migrations complexes.

Un fichier .htaccess corrompu. Le fichier .htaccess est le lien entre WordPress et Apache. Il stocke les directives mod_rewrite responsables des URL «propres». Un plugin écrit n’importe quoi, vous supprimez accidentellement le fichier via FTP, et certains panneaux d’hébergement le réinitialisent lors de changements de paramètres. Sans un .htaccess fonctionnel, les permaliens se transforment en ?p=123.

Comment réparer les permaliens cassés: guide étape par étape

Nous avons couvert les causes, passons maintenant aux solutions. Procédez dans l’ordre: n’appliquez chaque étape suivante que si la précédente n’a pas fonctionné.

Étape 1. Réinitialiser les paramètres de permaliens

La méthode la plus rapide et la plus sûre. WordPress stocke la structure des permaliens dans la base de données et, lors de l’enregistrement des paramètres, il régénère les règles de réécriture. Les développeurs appellent ce processus «flush rewrite rules».

Allez dans l’administration, naviguez vers Réglages → Permaliens:

Page des réglages de permaliens dans l'administration WordPress

Passez temporairement à une autre structure, par exemple «Simple» au lieu de «Nom de l’article», et cliquez sur Enregistrer les modifications. Revenez ensuite à l’option d’origine et enregistrez à nouveau. Vous n’avez pas besoin de changer les paramètres de façon permanente: c’est le fait d’enregistrer qui compte, ce qui force WordPress à reconstruire les règles.

Rechargez le site et vérifiez si les articles s’ouvrent. Cela fonctionne? Problème résolu. Sinon, passez à la suite.

Étape 2. Vérifier et recréer le fichier.htaccess

Si la réinitialisation n’a pas aidé, la source du problème se trouve presque certainement dans .htaccess. Le fichier est situé à la racine du site, au même endroit que wp-config.php et les dossiers wp-content et wp-includes.

Fichier .htaccess dans le dossier racine de WordPress via un client FTP

Connectez-vous au serveur via FTP (FileZilla, WinSCP) ou le gestionnaire de fichiers du panneau d’hébergement:

Gestionnaire de fichiers cPanel avec le dossier racine de WordPress

Trouvez .htaccess, faites un clic droit et renommez-le en .htaccess_old. Ne supprimez pas le fichier, il peut contenir des règles critiques comme la redirection HTTP→HTTPS ou des paramètres de compression:

Renommage du fichier .htaccess en .htaccess_old via FTP

Après le renommage, WordPress ne voit plus l’ancien fichier. Allez dans l’administration et réinitialisez les permaliens comme à l’Étape 1, le système créera un nouveau fichier .htaccess propre avec les règles de réécriture correctes. Conservez l’ancien fichier comme copie de sauvegarde.

Étape 3. Trouver le plugin conflictuel

Le problème est-il apparu après l’installation d’un plugin spécifique? Désactivez-le et réinitialisez à nouveau les permaliens, c’est très probablement suffisant.

Quand le coupable est inconnu, utilisez la méthode par élimination:

Désactivation groupée des extensions dans l'administration WordPress

Désactivez tous les plugins en une seule fois. Réinitialisez les permaliens. Vérifiez le site: s’il fonctionne, le problème vient de l’un des plugins. Réactivez-les un par un, en réinitialisant les paramètres et en vérifiant le site après chacun. Le plugin après lequel les liens se cassent à nouveau est la cause.

Remplacez le plugin conflictuel trouvé par une alternative du répertoire WordPress.org. Signalez le problème au développeur: souvent, ils sont au courant des incompatibilités et peuvent suggérer une solution de contournement.

Étape 4. Configurer le serveur: AllowOverride et mod_rewrite

Si les étapes précédentes n’ont pas aidé et que vous utilisez Apache, le problème peut venir des paramètres de l’hôte virtuel.

D’abord, assurez-vous que le module mod_rewrite est activé. C’est lui qui transforme les URL «propres» en requêtes que WordPress comprend. Vérifiez et activez-le avec la commande:

1sudo a2enmod rewrite

Si le module était déjà activé, un avertissement apparaîtra, c’est normal. Redémarrez maintenant Apache:

1sudo systemctl restart apache2

Sur CentOS/RHEL, la commande de redémarrage est différente:

1sudo systemctl restart httpd

Le deuxième composant requis est la directive AllowOverride All. Elle permet au fichier .htaccess de surcharger la configuration du serveur dans le répertoire du site. Ouvrez le fichier de configuration Apache: sur Ubuntu, c’est /etc/apache2/sites-available/your-site.conf, sur CentOS, c’est /etc/httpd/conf/httpd.conf. Trouvez la section <Directory> et mettez-la sous cette forme:

1<Directory /var/www/your-site/>
2 AllowOverride All
3</Directory>

Remplacez le chemin /var/www/your-site/ par le chemin réel du dossier racine de WordPress sur votre serveur. Après l’édition, redémarrez Apache avec la commande ci-dessus, puis réinitialisez les permaliens dans l’administration.

Ces deux actions serveur, AllowOverride All plus mod_rewrite, couvrent pratiquement tous les scénarios restants de permaliens cassés sur Apache.

Vidéo: restauration des permaliens étape par étape

Si vous préférez regarder plutôt que lire, voici un petit guide qui montre tout le processus, de la réinitialisation des paramètres de permaliens à la restauration de .htaccess sur un site réel:

⁉️🤔 Foire aux questions

Pourquoi l’erreur 404 persiste-t-elle après la réinitialisation des permaliens?

La réinitialisation via l’administration réécrit les règles de réécriture dans la base de données. Mais si .htaccess est physiquement inaccessible en écriture, droits d’accès incorrects, WordPress ne peut pas mettre à jour le fichier sur le serveur. Vérifiez les permissions: généralement, 755 pour les dossiers et 644 pour les fichiers sont requis. Assurez-vous aussi que .htaccess existe physiquement: après le renommage à l’Étape 2, WordPress en crée un nouveau lors de la réinitialisation suivante. La réinitialisation elle-même ne change pas les URL des articles existants et ne casse pas l’indexation.

Puis-je simplement supprimer.htaccess?

Non. Sans .htaccess sur un serveur Apache, WordPress revient aux liens «simples» comme ?p=123, ce qui est inesthétique et nuit au SEO. L’ordre correct: renommez l’ancien fichier tout en gardant une copie de sauvegarde, puis réinitialisez les paramètres de permaliens dans l’administration. WordPress créera automatiquement un nouveau .htaccess. Ne supprimez jamais le fichier sans pouvoir le restaurer: il peut contenir des règles critiques de redirection HTTP→HTTPS ou des paramètres de compression.

Que faire si le site est sur Nginx?

Sur Nginx, il n’y a pas de fichier .htaccess, toutes les règles de réécriture sont écrites dans la configuration du serveur. Le bloc standard pour WordPress: location / { try_files $uri $uri/ /index.php?$args; }. Vérifiez le fichier de configuration du site (généralement /etc/nginx/sites-available/your-site), ajoutez ce bloc à la section server et rechargez Nginx: sudo systemctl reload nginx. Les étapes 1 et 3, réinitialisation des liens et vérification des plugins, fonctionnent pour Nginx exactement de la même manière que pour Apache.

Quel plugin casse le plus souvent les permaliens?

Statistiquement, les plugins SEO arrivent en tête, ils manipulent directement les URL, ainsi que les solutions de cache: elles créent des copies statiques des pages et peuvent «se souvenir» de la version cassée. En troisième position viennent les plugins de sécurité qui modifient .htaccess pour bloquer les requêtes suspectes. Après avoir désactivé un plugin de cache, assurez-vous de vider le cache du navigateur ou d’ouvrir le site en navigation privée, une version statique en cache avec l’erreur 404 peut être affichée même après la correction.

Dois-je vérifier l’intégrité de la base de données?

Dans de rares cas, la cause est une table wp_options corrompue où les paramètres de permaliens sont stockés. Si aucune des méthodes décrites n’a aidé, allez dans phpMyAdmin, trouvez la table wp_options et vérifiez l’entrée avec option_name = 'rewrite_rules'. Si la valeur ressemble à du charabia ou à un objet sérialisé corrompu, supprimez cette entrée, puis réinitialisez les paramètres de permaliens dans l’administration. WordPress recréera les règles de réécriture à partir de zéro. La plupart des utilisateurs n’auront pas besoin de cette étape: la grande majorité des problèmes sont résolus par les méthodes 1 à 3.

Que faire si rien n’a fonctionné

Nous sommes passés d’une simple réinitialisation des paramètres à la configuration des serveurs Apache et Nginx. Pour l’immense majorité des sites, l’une de ces méthodes résout le problème.

Si les erreurs 404 persistent, contactez le support technique de votre hébergement. Décrivez le problème et listez les étapes que vous avez déjà effectuées. Souvent, la cause réside dans les spécificités de l’environnement d’hébergement: mod_rewrite désactivé au niveau du fournisseur, configuration PHP-FPM non standard ou règles de pare-feu personnalisées bloquant les requêtes vers index.php. Le support d’hébergement voit la partie serveur qui vous est cachée et résout ce type de problèmes en quelques minutes.

La règle principale à retenir: réinitialisez les permaliens → renommez.htaccess → réinitialisez à nouveau. Cette séquence de deux actions corrige la plupart des cas et ne nécessite ni connaissances particulières ni accès au serveur. Commencez par là la prochaine fois, et il y a de fortes chances que vous n’ayez pas besoin d’aller plus loin.