web-dev-qa-db-ja.com

Apache Webサイトを503に「一時停止」する方法

RFC2616、503サービスを利用できません

一時的な過負荷またはサーバーのメンテナンスのため、サーバーは現在リクエストを処理できません

特定の名前ベースの仮想ホスト503コードをカスタムHTMLページで提供するようにApache 2.2を構成する方法

40
temoto

mod_rewrite を使用できます:

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

RewriteCondディレクティブは、カスタムエラードキュメントにリダイレクトするときに追加の内部エラーが発生しないようにします。

30
Gumbo

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

楽しい!

53
captainpete

@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]
0
Alex Nolasco