Bagaimana cara mengkonfigurasi virtual host default mengembalikan header 404 di apache?

13

Saya tahu bahwa pertanyaan serupa telah diajukan, tetapi jawaban yang tersedia tidak begitu jelas, jadi tolong sampaikan kepada saya.

Setelah mengatur beberapa <VirtualHost>s di apache, saya ingin mengkonfigurasi _default_ ServerName sehingga mengembalikan pesan 404. Yaitu, kecuali beberapa domain yang tersedia secara eksplisit ditentukan di header http Host, kembali 404. (Idealnya sesuatu yang lebih langsung daripada menunjuk ke direktori sekarang-tidak ada.)

Bantuan apa pun akan sangat dihargai.

Ezequiel-garzon
sumber

Jawaban:

26

Apakah Anda sudah mencoba:

Redirect 404 /
ErrorDocument 404 "Halaman Tidak Ditemukan"

di VirtualHost default?


sumber
Terima kasih, itu berhasil! Karena jelas tingkat keahlian saya yang rendah, saya mungkin menambahkan untuk rekan pemula saya bahwa server default harus muncul terlebih dahulu. (Ini membutuhkan waktu beberapa saat untuk mencari tahu!)
ezequiel-garzon
Perhatikan bahwa jika ErrorDocumentmenunjuk ke file atau url di dalam vhost itu, itu juga akan mengembalikan 404, sehingga menghasilkan kesalahan server internal.
Cyril N.
Jawaban ini akan berfungsi untuk situs di mana semua vhosts terkandung dalam satu file (jawaban Eugene Fidelin lebih lengkap). Saat menggunakan file .conf yang terpisah untuk setiap situs dengan a2ensite, saya tidak tahu cara memuat konfigurasi default (404) terlebih dahulu.
Andrew Swift
Redirect 404 /cukup untuk menampilkan halaman default Apache "Not Found" dan juga berfungsi di dalam virtualhost tertentu (mungkin ada kasus ketika Anda ingin mengembalikan 404 untuk seluruh situs agar menghilang dari Google SERPs)
lucaferrario
1

Berikut adalah contoh 000-default.conf yang akan mengembalikan 404 kesalahan jika nama server tidak dikonfigurasi untuk Apache

<VirtualHost *:80>
  ServerName default
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  Redirect 404 /
</VirtualHost>
Eugene Fidelin
sumber
Saya dapat mengkonfirmasi bahwa bagian kedua berfungsi ketika semua vhosts dikonfigurasikan dalam satu file (saya taruh dulu).
Andrew Swift
1
Mungkin lebih baik menggunakan 503 (Layanan Tidak Tersedia) daripada 404, tetapi saya ragu dalam praktiknya itu membuat banyak perbedaan, alat pemantauan biasanya akan mengingatkan untuk kode non-200.
Kris
Ini berfungsi dengan baik untuk http tetapi tidak untuk https ketika saya menggunakan port 443. Apakah Anda tahu tentang itu?
Sohail Ahmed