Développement et bases de données

Page de maintenance temporaire avec le .htaccess

Vérifié le 3 min de lecture .htaccess redirections

Vous pouvez mettre un site en maintenance temporaire avec .htaccess et conserver chaque URL avec une réponse 503 Service Unavailable. Cela permet d'indiquer que l'indisponibilité est temporaire sans rediriger toutes les pages vers une autre adresse.

Préparer la page

Créez un fichier statique mantenimiento.html à la racine publique du domaine. Ainsi, il ne dépend ni de PHP ni de la base de données que vous êtes en train de réparer. S'il utilise ses propres images ou CSS, placez-les dans mantenimiento-assets ou utilisez des styles dans le HTML.

Gardez le .htaccess d'origine et ajoutez ce bloc avant les règles générales du CMS :

ErrorDocument 503 /mantenimiento.html

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^192\.0\.2\.10$
RewriteCond %{REQUEST_URI} !^/mantenimiento\.html$ [NC]
RewriteCond %{REQUEST_URI} !^/mantenimiento-assets/ [NC]
RewriteCond %{REQUEST_URI} !^/robots\.txt$ [NC]
RewriteRule ^ - [R=503,L]

Remplacez example.com par votre domaine en conservant les points échappés, et 192.0.2.10 par l'IP publique autorisée à continuer de travailler. Ce sont des valeurs d'exemple. Si vous devez couvrir d'autres noms, adaptez la portée de façon explicite.

La page de maintenance, ses ressources et robots.txt restent accessibles. Tout le reste renvoie 503, sauf pour l'IP autorisée. Si le site est servi depuis un sous-dossier, adaptez aussi les chemins des exceptions et du document d'erreur.

Vérifier et terminer

Testez depuis une connexion différente de celle autorisée : la page d'accueil et une URL interne doivent renvoyer 503 et afficher la page. Vérifiez aussi que ses ressources se chargent et que vous pouvez continuer à travailler depuis votre connexion.

S'il y a un cache serveur ou un CDN, vérifiez la réponse que voit un visiteur ; une copie en cache peut masquer la maintenance ou persister ensuite. Ne publiez pas la page de maintenance comme une réponse 200 pour toutes les URL.

À la fin, retirez ce bloc, rétablissez les règles habituelles et vérifiez les pages concernées, les formulaires et l'état HTTP. Ne maintenez la maintenance que le temps nécessaire.

Si vous utilisez un proxy

REMOTE_ADDR peut contenir l'IP du proxy au lieu de la vôtre. Vérifiez comment le serveur reconnaît les IP des proxys de confiance avant d'utiliser cette exception ; ne remplacez pas la condition par un en-tête que le visiteur pourrait falsifier.

Si vous ne pouvez pas identifier votre connexion de façon fiable, utilisez le mode maintenance avec accès authentifié de l'application ou convenez d'une autre solution avec l'assistance. Ne désactivez pas le proxy uniquement pour faire correspondre une IP.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.