Pourquoi un 503 nu fait plus de dégâts que la panne elle-même

Les moteurs qui reçoivent des pages 5xx brutes pendant une migration planifiée réduisent la fréquence d'exploration et, sur des fenêtres longues, sortent des pages des résultats. Les visiteurs qui tombent sur une page d'erreur du navigateur concluent que l'activité s'est arrêtée. Les deux pertes sont évitables : le bord du réseau peut répondre à votre place avec une page contrôlée, un message clair et la sémantique HTTP correcte.

Mettre en place une page de maintenance pas à pas

Étape 1 : définir le périmètre laissé ouvert. Décidez de ce qui doit continuer de fonctionner pendant la maintenance : endpoints de health-check, webhooks de paiement, une version d'API, les IP de vos bureaux. Une page de maintenance qui bloque un webhook Stripe coûte plus cher que la panne qu'elle masque.

Étape 2 : déployer un Worker sur la zone. L'implémentation la plus propre est un petit Worker sur une route (exemple.fr/*) qui intercepte les requêtes pendant la fenêtre, sert votre HTML à votre image avec un statut 503 et un en-tête Retry-After, et laisse passer les exceptions listées vers l'origine. Esquisse de la logique :

const OPEN = ["/api/health", "/webhooks/"];
if (!OPEN.some(p => url.pathname.startsWith(p)) && MAINTENANCE_ON) {
  return new Response(maintenanceHTML, {
    status: 503,
    headers: { "content-type": "text/html", "retry-after": "3600" }
  });
}
return fetch(request);

Étape 3 : le piloter par un interrupteur. Liez l'état à un namespace KV, une variable d'environnement ou un simple marqueur : la page doit pouvoir être activée en quelques secondes et retirée en quelques secondes, sans redéploiement de code.

Étape 4 : tester la sémantique. Vérifiez au curl que les pages normales renvoient 503, que les chemins ouverts renvoient 200 et que les crawlers voient l'en-tête Retry-After. Une page de maintenance servie en statut 200 se fait indexer comme page de référence ; un 503 avec Retry-After est compris comme temporaire et retesté.

Étape 5 : ajouter Always Online pour les pannes réelles. Pour l'indisponibilité non planifiée, Caching > Pages d'erreur d'origine propose une option Always Online qui sert les copies conservées par Cloudflare pendant que l'origine est injoignable. C'est un filet pour les pages de contenu, pas pour les transactions : formulaires et paiements ne fonctionnent pas sur une capture, gardez le bandeau honnête sur ce qui est disponible ou non.

Les erreurs fréquentes pendant les fenêtres de maintenance

  • Servir la page en statut 200. L'accident SEO classique : Google indexe le message de maintenance comme page d'accueil. Les codes de statut sont le message.
  • Bloquer les webhooks de paiement. Les passerelles réessaient pendant une fenêtre limitée ; un webhook bloqué devient une commande perdue ou un abonnement contesté. Exemptez toujours les routes de webhooks.
  • Oublier le cache. Si vos pages sont déjà en cache edge, le Worker peut ne jamais s'exécuter pour les chemins cachés. Contournez le cache pour la route de maintenance ou purgez avant la fenêtre.
  • Utiliser un mode de sécurité global comme outil de maintenance. Les interrupteurs de défis n'ont jamais été conçus pour cela et ajoutent de la confusion pour les vrais utilisateurs.
  • Aucune condition de fin. Une page qui reste en ligne des jours parce que personne n'est responsable de l'interrupteur transforme la maintenance en panne. Fixez l'heure de fin et un responsable avant de commencer.

Questions fréquentes

Always Online fonctionne-t-il sur un plan Free ?

Always Online est disponible sur tous les plans, Free compris, et les Workers utilisés pour la page de maintenance contrôlée fonctionnent aussi sur Free dans de généreux quotas. La couverture dépend de ce que Cloudflare a pu mettre en cache de votre site.

Quel code de statut doit renvoyer une page de maintenance ?

503 avec un en-tête Retry-After, pour les humains comme pour les crawlers. Google documente explicitement le 503 comme le signal correct d'indisponibilité temporaire et retente sans déclasser vos pages, tant que la fenêtre reste raisonnable.

Peut-on garder une langue ou un chemin en ligne pendant la maintenance ?

Oui, c'est exactement le rôle de la liste de périmètre ouvert du Worker : exempter des chemins, des noms d'hôte ou des plages IP précis pendant que tout le reste reçoit la page de maintenance. Définissez cette liste avant la fenêtre, pas pendant l'incident.

Jusqu'à quand une maintenance peut durer sans dégât SEO ?

Des fenêtres courtes (quelques heures, jusqu'à une journée) avec 503 et Retry-After corrects sont bien tolérées. Les coupures de plusieurs jours perdent progressivement des pages ; si l'opération doit durer, gardez le contenu clé disponible plutôt qu'une page unique sur tout le site.

Besoin d'une page de maintenance qui protège votre SEO ?

CF Garage implémente le Worker, le périmètre ouvert et la sémantique des codes de statut, et teste tout le flux avant votre fenêtre de migration. Prix fixe, garantie de satisfaction.

Découvrir les tarifs & commander

Ressources et guides complémentaires