# Site bloqué en maintenance : « Indisponibilité temporaire »

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

- Auteur : WordPress Développement
- Publié le : 2026-10-02
- Mis à jour le : 2026-10-02
- URL : https://www.wpmoderne.fr/erreurs-wordpress/maintenance-bloquee/

> 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 / constat | Cause probable | À vérifier |
| --- | --- | --- |
| Le message apparaît juste après un clic sur « Mettre à jour » et disparaît au bout de quelques minutes | Mise à jour en cours ou interrompue ; le délai de dix minutes fait son œuvre | Patientez dix minutes, puis rechargez avec Ctrl+F5 |
| Le message persiste plus de dix minutes ; un fichier `.maintenance` est visible à la racine | Horodatage dans le futur, ou mise à jour qui relance le fichier en boucle | Contenu du fichier, tâches planifiées et mises à jour automatiques |
| Aucun fichier `.maintenance`, mais le site reste en maintenance | Extension de maintenance, `wp-content/maintenance.php`, page de l’hébergeur ou du CDN | Extensions 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 page | Réglages de l’extension de mode maintenance |
| Le site fonctionne en navigation privée ou depuis un autre réseau | Cache navigateur, cache de page ou CDN qui a gardé la réponse 503 | Purge 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](https://www.wpmoderne.fr/securite/sauvegardes-plan-de-reprise-wordpress/) 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](https://www.wpmoderne.fr/securite/mises-a-jour-automatiques-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](https://www.wpmoderne.fr/tips/mode-maintenance-code-http-503/), plutôt que de bricoler le fichier `.maintenance`.

## FAQ
