Erreur 404 après une migration ou un changement de permaliens
Toutes les pages du site renvoient une erreur 404 après une migration vers un nouveau serveur, ou juste après avoir touché aux réglages de permaliens : la cause est presque toujours que la configuration du serveur qui redirige les URL vers WordPress n’a pas suivi le déménagement.
Comment je procède
-
Distinction du symptôme
Je vérifie si seule la page d’accueil fonctionne, typique d’un problème de réécriture d’URL, ou si le site entier boucle en redirection, souvent un problème de siteurl/home plutôt que de permaliens.
-
Identification du serveur web
Apache ou Nginx ne se corrigent pas de la même façon : Apache lit un fichier .htaccess à la racine, Nginx a besoin d’un bloc server édité directement dans sa configuration.
-
Réenregistrement des permaliens
Sur Apache, je resauvegarde Réglages > Permaliens pour régénérer le .htaccess ; sur Nginx, j’édite le bloc server pour ajouter l’équivalent de try_files, WordPress seul ne peut pas le faire.
-
Vérification des types de contenu personnalisés
Si des extensions WooCommerce ou un constructeur de pages enregistrent leurs propres types de contenu, je vérifie qu’elles sont actives au moment du réenregistrement pour que leurs règles de réécriture soient bien reprises.
-
Vérification de siteurl et home
Je contrôle que ces deux options en base correspondent au domaine réel après la migration, car un mauvais siteurl produit un 404 ou une boucle de redirection qui n’a rien à voir avec les permaliens.
Ce que je traite régulièrement
- Toutes les pages du site renvoient une erreur 404 après une migration vers un nouvel hébergeur
- Seule la page d’accueil fonctionne, toutes les autres pages sont en erreur 404
- Les pages produit WooCommerce sont en 404 alors que les pages classiques fonctionnent
- Une boucle de redirection apparaît après un changement de nom de domaine
- Les permaliens fonctionnaient sur l’ancien serveur mais plus sur le nouveau
Comment fonctionnent les permaliens, et ce qui casse après une migration
Les permaliens « jolis » de WordPress (Réglages > Permaliens) fonctionnent en deux temps : WordPress réécrit les URL brutes en chemins propres, puis le serveur web doit rediriger chaque requête vers index.php pour que WordPress puisse la résoudre. Sur Apache, cette redirection passe par des règles de réécriture dans .htaccess ; sur Nginx, par un bloc équivalent dans la configuration du serveur.
Après une migration vers un nouveau serveur, ce fichier .htaccess, ou ce bloc Nginx, ne suit pas automatiquement. Sur Apache, resauvegarder Réglages > Permaliens régénère le .htaccess et suffit en général. Sur Nginx, il faut éditer directement le bloc server, ce que WordPress ne peut pas faire lui-même.
Les types de contenu personnalisés, utilisés par de nombreuses extensions WooCommerce et par les constructeurs de pages pour leurs templates, ont besoin que leurs propres règles de réécriture soient elles aussi régénérées : réenregistrer les permaliens le fait, mais seulement si l’extension qui les déclare est active au moment de l’opération. Un décalage entre les options siteurl/home et le domaine réel après migration produit un autre type de 404 ou de boucle de redirection, sans rapport avec les permaliens : les deux se ressemblent pour un commerçant mais se corrigent différemment.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Pages liées
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.