Saya perlu mengembalikan kode status 503 dari salah satu situs saya saat sedang dalam perbaikan, dengan cara SE_firendly yang dihormati waktu. Sepertinya saya tidak bisa mengetahui cara melakukan ini tanpa menggunakan skrip eksternal, yang saya lebih suka hindari.
Apakah ada arahan apache yang memungkinkan saya mengembalikan kode status HTTP sewenang-wenang tanpa menggunakan peretasan seperti menggunakan skrip php yang menetapkan header status?
apache-2.2
http
seo
dan mackinlay
sumber
sumber
Jawaban:
Ini melayani setiap permintaan halaman induk statis bersama dengan status 503.
RedirectMatch digunakan untuk meniadakan halaman holding itu sendiri yang jika tidak akan membuat loop tak terbatas.
mod_header digunakan untuk mengatur header Retry-After sehingga Anda dapat memberi tahu Google / bot lain, dll bahwa Anda harus membuat cadangan setelah 18000 detik (5 jam) dalam contoh ini. Anda dapat
sudo ap2enmod header
mengaktifkan mod_header (yang diperlukan untuk arahan Header).sumber
RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
.Mencoba
Dari http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :
Catatan tambahan: Ini akan menampilkan DokumenDokumen default / dikonfigurasi untuk Kesalahan 503.
sumber
Redirect 503 /
sepertinya berhasil.Untuk membuat mode pemeliharaan Anda lebih fleksibel, atur 503 ketika ada file khusus, ala:
CATATAN: Lokasi DOCUMENT_ROOT dapat berbeda antara httpd 2.2 dan 2.4
Dengan cara ini, yang perlu Anda lakukan adalah "menyentuh /path/to/docroot/.maintenance" dan situs Anda akan langsung mulai mengembalikan 503-an. Kemudian untuk menjadikannya semua murni, buat halaman kesalahan html yang diformat dengan baik dan tambahkan ini ke file konfigurasi server apache yang benar:
Dan untuk poin bonus jika Anda memiliki beberapa server web, jadikan lokasi .memelihara pada sistem file bersama, atau untuk lebih banyak poin bonus:
pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"
Keuntungan membuat file mode perawatan berbasis adalah berfungsi ketika aplikasi Anda tidak, itu cepat dan sederhana, dan lebih mudah untuk proxy cache frontend untuk menangani karena Anda dapat menangani semua backend 503 dalam satu gerakan sekaligus.
Sumber:
sumber