Как разместить веб-сайт Apache до 503 "временно вниз"?
RFC2616, 503 Service Unavailable
В настоящее время сервер не может обработать запрос из-за временной перегрузки или обслуживания сервера
Как настроить Apache 2.2 для работы с определенным кодом на основе имени виртуального хоста 503 с пользовательской HTML-страницей?
Ответы
Ответ 1
Вы можете использовать mod_rewrite:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule !^/down/for/maintenance$ %{DOCUMENT_ROOT}down/for/maintenance [L,R=503]
Директива RewriteCond
гарантирует, что при перенаправлении на пользовательский документ ошибки не возникает дополнительной внутренней ошибки.
Ответ 2
503 Временно недоступно, с триггером
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteCond "/srv/www/example.com/maintenance.trigger" -f
RewriteRule ^(.*)$ /$1 [R=503,L]
Если файл maintenance.trigger
существует, Apache будет обслуживать ответ 503 Service Unavailable
. Чтобы выполнить настройку страницы "вниз для обслуживания", используйте ErrorDocument
, чтобы указать файл, например:
ErrorDocument 503 /503_with_cats.html
Наслаждайтесь!
Ответ 3
@temoto
Чтобы указать 503 для ботов и страницу обслуживания для людей, попробуйте следующее
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]