Halaman pemeliharaan yang mengembalikan 200 memberi tahu mesin pencari bahwa seluruh situs Anda sekarang adalah sebuah halaman bertuliskan "segera kembali", dan mereka pun akan mengindeksnya. Jawaban yang benar adalah 503 dengan tajuk Retry-After, yang berarti sementara tak tersedia, datanglah nanti — dan itu tak berbiaya apa pun.

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

Sakelar berbentuk berkas berarti tanpa muat ulang, tanpa mengubah konfigurasi, dan bisa dibalik dari sebuah skrip penggelaran.

Izinkan diri Anda sendiri masuk

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; }
Tanpa perkecualian, Anda tak bisa menguji perbaikan yang sedang Anda gelar; dan tanggapan yang lazim adalah mematikan mode pemeliharaan sementara situsnya masih rusak. Masukkan alamat Anda sendiri sebelum Anda memerlukannya.

Apa yang semestinya tertulis di halaman itu

  • Bahwa ini memang direncanakan, dan kapan situsnya kembali — sebuah waktu yang nyata, bukan "sebentar lagi".
  • Satu cara menghubungi Anda yang tak bergantung pada situsnya.
  • Tanpa bergantung pada aplikasinya: sebuah berkas statis dengan CSS di dalamnya.

Periksalah

curl -sSI https://yourdomain.com/ | grep -E '^HTTP|retry-after'
# HTTP/2 503
# retry-after: 3600
Untuk penggelaran yang cuma makan beberapa detik, jangan pakai mode pemeliharaan sama sekali: bangunlah ke direktori baru lalu pindahkan sebuah tautan simbolik. Tak ada seorang pun yang melihat apa-apa — lihat Menggelar dengan pertukaran yang tak terbagi.