200 döndüren bir bakım sayfası, arama motorlarına sitenizin tamamının artık "birazdan döneceğiz" yazan bir sayfa olduğunu söyler; onlar da bunu dizine ekler. Doğru yanıt, Retry-After başlığıyla gelen 503'tür: geçici olarak erişilemez, daha sonra gelin — ve hiçbir maliyeti yoktur.

Nginx

server {
    # ...
    if (-f /var/www/site/maintenance.on) {
        return 503;
    }

    error_page 503 @maintenance;
    location @maintenance {
        root /var/www/site/public;
        rewrite ^ /maintenance.html break;
        add_header Retry-After 3600 always;
    }
}
sudo touch /var/www/site/maintenance.on     # on
sudo rm /var/www/site/maintenance.on        # off

Dosyaya dayalı bir anahtar demek, yeniden yükleme yok, yapılandırma değişikliği yok, ve bir dağıtım betiğinden çevrilebilir demektir.

Kendinizi içeri alın

set $maint 0;
if (-f /var/www/site/maintenance.on) { set $maint 1; }
if ($remote_addr = 203.0.113.42)   { set $maint 0; }
if ($maint = 1) { return 503; }
Bir muafiyet olmadan, dağıttığınız düzeltmeyi sınayamazsınız; alışılmış tepki de site hâlâ bozukken bakım kipini kapatmak olur. Kendi adresinizi, ona ihtiyaç duymadan önce oraya yazın.

Sayfada ne yazmalı

  • Bunun planlı olduğu ve sitenin ne zaman döneceği — "birazdan" değil, gerçek bir saat.
  • Size ulaşmanın, siteye bağlı olmayan bir yolu.
  • Uygulamaya hiçbir bağımlılık olmasın: içine CSS gömülmüş duruk bir dosya.

Denetleyin

curl -sSI https://yourdomain.com/ | grep -E '^HTTP|retry-after'
# HTTP/2 503
# retry-after: 3600
Saniyeler süren bir dağıtım için bakım kipini hiç kullanmayın: yeni bir dizine kurun ve bir sembolik bağı çevirin. Kimse hiçbir şey görmez — bkz. Bölünmez bir geçişle dağıtım.