Comment mettre le site Apache sur 503 "temporary down"?

RFC2616, 503 Service non disponible

le serveur est actuellement incapable de traiter la requête en raison d'une surcharge temporaire ou maintenance du serveur

comment configurer Apache 2.2 pour servir du code 503 virtualhost basé sur un nom particulier avec une page HTML personnalisée?

38
demandé sur temoto 2009-03-07 23:41:17

3 réponses

Vous pouvez utiliser mod_rewrite:

RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule !^/down/for/maintenance$ %{DOCUMENT_ROOT}down/for/maintenance [L,R=503]

RewriteCond la directive s'assure qu'aucune erreur interne supplémentaire ne se produit lors de la redirection vers un document d'erreur personnalisé.

28
répondu Gumbo 2009-03-07 21:19:57

503 temporairement indisponible, avec déclenchement

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteCond "/srv/www/example.com/maintenance.trigger" -f
RewriteRule ^(.*)$ / [R=503,L]

Si le maintenance.trigger le fichier existe, Apache servira un 503 Service Unavailable réponse. Pour créer une page personnalisée "down for maintenance", utilisez ErrorDocument pour spécifier le fichier, comme ceci:

ErrorDocument 503 /503_with_cats.html

Profitez-en!

47
répondu captainpete 2012-03-06 00:48:48

@temoto

pour spécifier un 503 pour les bots et une page de maintenance pour les humains, essayez

RewriteEngine on
RewriteBase /
#for bots such as google
RewriteCond %{HTTP_USER_AGENT} ^.*(Googlebot|Googlebot|Mediapartners|Adsbot|Feedfetcher|bingbot)-?(Google|Image)? [NC]
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule !^/down/for/maintenance$ %{DOCUMENT_ROOT}down/for/maintenance [L,R=503]

#for humans
RewriteCond %{REMOTE_HOST} !^1\.1\.1\.1
RewriteCond %{REQUEST_URI} !^/maint.html [NC]
RewriteRule .* /maint.html [R=302,L]
1
répondu Alex Nolasco 2012-03-14 02:49:25