Aller au contenu principal

Corriger les erreurs 404 dans WordPress

Une erreur 404 signifie que le serveur a bien été joint, mais qu’il n’a rien trouvé à cette adresse. Dans WordPress, elle se manifeste de deux façons très différentes : tous les articles et toutes les pages sauf la page d’accueil renvoient une 404, ou seulement quelques adresses. Ce guide vous aide à identifier votre cas et à le corriger. Il s’adresse aux propriétaires de sites qui savent utiliser le tableau de bord et, pour certaines étapes, se connecter par SFTP.

Quel est votre problème ?​

Ce que vous voyezCause probableSection
La page d’accueil fonctionne, mais tous les articles et pages renvoient une 404Les règles de réécriture manquent ou ne fonctionnent pasRéenregistrer les permaliens
Seules certaines adresses renvoient une 404Le contenu a été supprimé ou son adresse a changéPages manquantes ou déplacées
Des images ou des fichiers renvoient une 404Les fichiers manquent ou sont dans le mauvais dossierVérifiez l’emplacement des fichiers par SFTP

Comment fonctionnent les adresses WordPress​

Les pages WordPress n’existent pas sous forme de fichiers distincts sur le serveur. Un permalien comme https://example.com/opening-hours/ n’est qu’une adresse lisible. Des règles de réécriture (rewrite rules) sur le serveur web transmettent chacune de ces requêtes au fichier index.php de WordPress, qui recherche alors le bon contenu. Si ces règles manquent, le serveur cherche un vrai dossier nommé opening-hours, ne trouve rien et renvoie une 404.

C’est la solution la plus rapide, et elle suffit souvent.

  1. Connectez-vous au tableau de bord et ouvrez Réglages > Permaliens.
  2. Sans rien modifier, choisissez Enregistrer les modifications.
  3. Rouvrez l’un des articles en erreur dans une fenêtre de navigation privée.

L’enregistrement demande à WordPress de reconstruire ses règles de réécriture et, sur les serveurs Apache, de les écrire dans le fichier .htaccess s’il le peut.

Vérifier le fichier .htaccess​

Sur les serveurs qui utilisent Apache ou un serveur web compatible, les règles de réécriture se trouvent dans un fichier appelé .htaccess, dans le dossier principal du site, à côté de wp-config.php. Son nom commence par un point : votre client SFTP peut donc le masquer ; activez l’option « afficher les fichiers cachés ». Consultez Redirections et .htaccess.

  1. Connectez-vous par SFTP et téléchargez une copie de .htaccess, s’il existe, en guise de sauvegarde.

  2. Ouvrez-le dans un éditeur de texte brut. S’il n’existe pas, créez un nouveau fichier nommé .htaccess.

  3. Vérifiez qu’il contient le bloc WordPress standard :

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress
  4. Enregistrez le fichier, téléversez-le et testez de nouveau le site.

Si WordPress est installé dans un sous-dossier, comme https://example.com/blog/, remplacez RewriteBase / par RewriteBase /blog/ et la dernière règle par /blog/index.php.

Conservez les autres règles du fichier, comme les redirections ou les règles de sécurité, mais placez-les en dehors des lignes # BEGIN WordPress et # END WordPress. WordPress peut réécrire tout ce qui se trouve entre ces lignes.

Une erreur dans .htaccess peut rendre le site inaccessible

Une faute de frappe dans .htaccess provoque généralement une erreur « 500 Internal Server Error » sur toutes les pages. Si cela arrive, téléversez de nouveau votre copie de sauvegarde.

mod_rewrite​

Le bloc ci-dessus repose sur un module Apache appelé mod_rewrite. Presque tous les hébergeurs compatibles avec WordPress l’ont activé. Si les règles sont correctes et que les pages renvoient toujours une 404, demandez à votre hébergeur de confirmer que mod_rewrite est activé et que les fichiers .htaccess sont autorisés à modifier les réglages de réécriture.

Sites sous nginx​

Le serveur web nginx ne lit pas les fichiers .htaccess. Ses règles de réécriture se trouvent dans la configuration du serveur, que vous pouvez modifier sur un VPS mais généralement pas sur un hébergement mutualisé. Une règle typique pour WordPress, dans le bloc server du site, est la suivante :

location / {
try_files $uri $uri/ /index.php?$args;
}

Elle indique à nginx de servir un vrai fichier ou dossier s’il existe, et sinon de transmettre la requête à WordPress. Rechargez nginx après avoir modifié sa configuration. Sur un hébergement mutualisé, contactez plutôt votre hébergeur.

Pages manquantes ou déplacées​

Si seules certaines adresses renvoient une 404, les règles de réécriture fonctionnent et le problème vient du contenu.

  • Contenu supprimé. Vérifiez Articles et Pages, y compris la vue Corbeille. Restaurez l’élément s’il a été supprimé par erreur.
  • Adresse modifiée. Changer le slug d’un article (la dernière partie de son adresse), sa page parente ou la structure des permaliens change son adresse. Les anciens liens, favoris et résultats de recherche pointent toujours vers l’ancienne.
  • Anciens liens. Les moteurs de recherche et d’autres sites peuvent encore pointer vers des adresses d’une version précédente du site.

Pour un contenu déplacé, ajoutez une redirection 301 de l’ancienne adresse vers la nouvelle. Une 301 indique aux navigateurs et aux moteurs de recherche que le déplacement est définitif. Vous pouvez ajouter des redirections avec une extension de redirection ou sous forme de règles dans .htaccess. Consultez Redirections et .htaccess.

Pour un contenu définitivement supprimé, une 404 est la bonne réponse. Assurez-vous que la page 404 de votre thème aide les visiteurs, par exemple avec un champ de recherche et un lien vers la page d’accueil.

Cet article vous a-t-il aidé ?