Le WordPress d'aujourd'hui, décodé pour les développeurs

Erreurs WordPress · Mises à jour et installation

Site bloqué en maintenance : « Indisponibilité temporaire »

HTTP 503

Site bloqué sur « Indisponibilité temporaire pour cause de maintenance » ? Supprimez le fichier .maintenance et relancez la mise à jour : guide pas à pas.

Message affiché

Indisponibilité temporaire pour cause de maintenance. Veuillez revenir dans un instant.

En anglais : Briefly unavailable for scheduled maintenance. Check back in a minute.

Réponse rapide

Une mise à jour interrompue a laissé un fichier .maintenance à la racine du site. Patientez dix minutes (délai d’expiration du cœur) ou supprimez ce fichier caché par SFTP, SSH ou avec wp maintenance-mode deactivate.

Vous ouvrez votre site, front comme administration, et vous tombez sur une page quasi vide qui annonce une indisponibilité temporaire pour cause de maintenance. Rien d’autre : pas de thème, pas de menu, pas de lien. Dans WordPress en anglais, le texte est « Briefly unavailable for scheduled maintenance. Check back in a minute. ». Le plus souvent, l’erreur apparaît juste après une mise à jour du cœur, d’une extension ou d’un thème qui a été interrompue (onglet fermé, délai dépassé, serveur surchargé) et elle disparaît toute seule. Quand elle persiste au-delà de quelques minutes, c’est qu’un fichier ou un mécanisme tiers maintient le site en mode maintenance.

Ce que signifie cette erreur

Cette page n’est pas une panne : c’est WordPress qui se met volontairement en pause. Pendant une mise à jour, le gestionnaire de mises à jour crée à la racine du site un fichier caché nommé .maintenance (méthode WP_Upgrader::maintenance_mode() dans wp-admin/includes/class-wp-upgrader.php, et le code de wp-admin/includes/update-core.php pour le cœur). Son contenu tient en une ligne : un horodatage Unix.

<?php $upgrading = 1767225600; ?>

Très tôt au chargement (wp-settings.php appelle wp_maintenance()), WordPress exécute la fonction wp_is_maintenance_mode() de wp-includes/load.php. Si le fichier existe et que l’horodatage date de moins de dix minutes, wp_maintenance() envoie l’en-tête Retry-After: 600 puis affiche le message avec wp_die(), sous le titre « Maintenance » et avec le code HTTP 503. À la fin d’une mise à jour réussie, le fichier est supprimé.

Deux détails importants pour le diagnostic. D’abord, WordPress considère la maintenance terminée dès que l’horodatage a plus de dix minutes : un fichier oublié ne bloque donc normalement le site que pendant ce laps de temps. Ensuite, un site qui reste bloqué plus longtemps est presque toujours dans l’un de ces cas : horodatage anormal (dans le futur ou réécrit à la main), mise à jour qui se relance en boucle et recrée le fichier, page de maintenance fournie par autre chose que le cœur (extension, wp-content/maintenance.php, hébergeur, CDN), ou page 503 conservée en cache.

Diagnostic rapide

Symptôme / constatCause probableÀ vérifier
Le message apparaît juste après un clic sur « Mettre à jour » et disparaît au bout de quelques minutesMise à jour en cours ou interrompue ; le délai de dix minutes fait son œuvrePatientez dix minutes, puis rechargez avec Ctrl+F5
Le message persiste plus de dix minutes ; un fichier .maintenance est visible à la racineHorodatage dans le futur, ou mise à jour qui relance le fichier en boucleContenu du fichier, tâches planifiées et mises à jour automatiques
Aucun fichier .maintenance, mais le site reste en maintenanceExtension de maintenance, wp-content/maintenance.php, page de l’hébergeur ou du CDNExtensions actives, contenu de wp-content, en-têtes de la réponse
Le message est différent (texte personnalisé, logo, compte à rebours)Ce n’est pas le message du cœur : un thème ou une extension affiche sa propre pageRéglages de l’extension de mode maintenance
Le site fonctionne en navigation privée ou depuis un autre réseauCache navigateur, cache de page ou CDN qui a gardé la réponse 503Purge des caches, curl -I sur l’URL

Les causes les plus fréquentes

  1. Une mise à jour interrompue (fermeture de l’onglet, coupure réseau, limite max_execution_time ou mémoire atteinte) qui laisse le fichier .maintenance derrière elle.
  2. Plusieurs mises à jour lancées en même temps, notamment des mises à jour en masse d’extensions sur un hébergement mutualisé lent.
  3. Un cache de page, un CDN ou un proxy qui a mis en cache la réponse 503 et continue de la servir.
  4. Une extension de mode maintenance ou un fichier wp-content/maintenance.php resté actif après une intervention.
  5. Un fichier .maintenance créé ou modifié à la main avec un horodatage dans le futur.
  6. Des mises à jour automatiques qui échouent à chaque passage de WP-Cron et recréent le fichier.

Solutions pas à pas

1. Attendre dix minutes, puis vider les caches

À appliquer d’abord, sans rien toucher. Vérifiez qu’aucune mise à jour n’est vraiment en cours (ne relancez rien tant que le message est affiché : vous risqueriez de la corrompre), patientez dix minutes, puis rechargez la page avec Ctrl+F5 ou testez en navigation privée. Si vous utilisez une extension de cache ou un CDN, purgez-les. Pour savoir si le 503 vient bien de WordPress, interrogez l’URL en ligne de commande :

curl -I https://www.exemple.fr/

Une réponse HTTP/2 503 accompagnée de retry-after: 600 correspond au comportement du cœur. Si l’en-tête est absent, la page vient d’ailleurs (extension, hébergeur, CDN).

2. Supprimer le fichier .maintenance

Si le site reste bloqué, supprimez le fichier. Sauvegardez d’abord vos fichiers et votre base si une mise à jour du cœur était en cours. Avec un client SFTP ou le gestionnaire de fichiers de l’hébergeur, activez l’affichage des fichiers cachés (le nom commence par un point), ouvrez la racine du site, là où se trouve wp-config.php, puis supprimez .maintenance. En SSH :

cd /chemin/vers/le/site
cat .maintenance
rm .maintenance

Avec WP-CLI, la commande suivante vérifie ou désactive le mode maintenance :

wp maintenance-mode status
wp maintenance-mode deactivate

Vérification : rechargez le site et l’administration. Si le message revient quelques instants plus tard, passez à la solution suivante : quelque chose recrée le fichier.

3. Reprendre ou réparer la mise à jour interrompue

Reconnectez-vous à l’administration, ouvrez Tableau de bord, puis Mises à jour, et relancez les mises à jour une par une, en commençant par le cœur. Si WordPress affiche qu’une autre mise à jour est en cours, un verrou subsiste dans la table des options (voir la fiche à venir sur ce sujet). Pour vérifier que les fichiers du cœur sont intacts après une mise à jour coupée net :

wp core verify-checksums
wp core update
wp plugin update --all

Si des fichiers du cœur sont signalés comme modifiés ou manquants, vous pouvez les réécrire sans toucher à wp-content ni à wp-config.php :

wp core download --force --skip-content

Cette commande écrase les fichiers du cœur : faites une sauvegarde complète avant de la lancer. Pour une extension dont la mise à jour s’est interrompue, la commande wp plugin install nom-de-l-extension --force la réinstalle proprement.

4. Chercher une page de maintenance qui ne vient pas du cœur

Si aucun fichier .maintenance n’existe, listez le contenu de wp-content : un fichier maintenance.php y est chargé par le cœur pour remplacer la page par défaut. Regardez aussi les extensions de mode maintenance ou « bientôt disponible », que vous pouvez désactiver en renommant leur dossier dans wp-content/plugins par SFTP, ou avec WP-CLI :

wp plugin list --status=active
wp plugin deactivate nom-de-l-extension

Le cœur offre aussi un filtre, enable_maintenance_mode, que certaines extensions ou un code personnalisé utilisent pour neutraliser la maintenance : cherchez-le dans votre code avec grep -rn enable_maintenance_mode wp-content. Enfin, si la page est servie par l’hébergeur ou par un CDN, c’est dans leur tableau de bord qu’il faut désactiver le mode maintenance.

5. Corriger un horodatage anormal

Si cat .maintenance affiche une valeur supérieure à l’heure actuelle, WordPress considère la maintenance comme toujours valide. Supprimez simplement le fichier (solution 2). Vous ne devriez jamais avoir à le recréer : le cœur le fait lui-même quand c’est nécessaire.

Prévenir l’erreur

  • Faites une sauvegarde complète avant toute mise à jour du cœur ; notre plan de reprise après sinistre détaille la démarche.
  • Mettez à jour les extensions une par une et ne fermez pas l’onglet avant la fin du message de confirmation.
  • Testez les mises à jour importantes sur un site de préproduction, et évitez les gros lots sur un hébergement mutualisé lent.
  • Maîtrisez les mises à jour automatiques et leurs notifications en lisant notre guide sur les mises à jour automatiques de WordPress.
  • Pour une vraie maintenance planifiée, utilisez une page dédiée qui renvoie un code 503, comme l’explique cet article sur le mode maintenance, plutôt que de bricoler le fichier .maintenance.

FAQ

Combien de temps dure le message de maintenance après une mise à jour ?

Au plus dix minutes : wp_is_maintenance_mode() ignore le fichier .maintenance dont l’horodatage dépasse ce délai. Si le message dure plus longtemps, supprimez le fichier ou cherchez une autre source de maintenance.

Où se trouve le fichier .maintenance ?

À la racine de l’installation, dans le même dossier que wp-config.php et wp-load.php. Comme son nom commence par un point, il est caché : activez l’affichage des fichiers cachés dans votre client SFTP ou votre gestionnaire de fichiers.

Puis-je accéder à l’administration pendant la maintenance ?

Non, le blocage intervient avant le chargement de WordPress et touche aussi wp-admin. Il faut agir sur les fichiers (SFTP, gestionnaire de fichiers, SSH) ou avec WP-CLI.

Est-ce mauvais pour le référencement ?

Le code 503 avec Retry-After indique aux moteurs de recherche que l’indisponibilité est temporaire. Quelques minutes sont sans conséquence, mais une maintenance qui dure plusieurs jours peut finir par pénaliser l’indexation.