Dalam desain apache2, setiap permintaan http dengan Host yang tidak dikenal akan diarahkan ke VirtualHost pertama yang dimuat. Apakah ada cara untuk menonaktifkan fitur ini? Mengatakan berbeda, saya ingin memiliki server web di mana pengguna hanya dapat secara eksplisit bernama definisi VirtualHost. Nama host lain yang tidak disebutkan secara eksplisit dalam baris ServerName atau ServerAlias harus diabaikan secara diam-diam.
Apakah ini mungkin?
Listen 80
NameVirtualHost *
<VirtualHost _default_:*>
# Anything matching this host should be silently ignored.
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example.com
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example.org
</VirtualHost>
Pembaruan: Seperti yang disarankan di bawah dan di tempat lain, dengan diam-diam mengabaikan permintaan mungkin bukan ide yang baik dan mungkin mematahkan RFC untuk HTTP. Namun, karena host virtual dirancang untuk mensimulasikan memiliki beberapa server HTTP fisik yang terpisah, pendekatan pengabaian senyap tampaknya tidak masuk akal bagi saya. Itu akan sama dengan virtual hosting berbasis IP dan firewall dari beberapa IP (mungkin tidak untuk semua klien).
sumber
RewriteRule . - [F]
Berikut ini cara alternatif yang tidak melibatkan aturan penulisan ulang:
sumber
<VirtualHost>
karena itu harus didefinisikan terlebih dahulu di konfigurasi server. Tepatnya file mana yang harus di dalam tergantung pada konfigurasi Anda. (Namun, masalah "subdomain yang dialihkan" Anda bisa menjadi masalah yang tidak terkait.)ini bekerja untuk saya
ganti xxxx dengan ipv4 Anda yang sebenarnya dan ipv6
ganti myactualservername.com dengan situs web aktual yang dilayani oleh mesin
Saya menggunakan host virtual berbasis nama.
kredit untuk solusi ini ke
https://serverfault.com/a/82309/459796
sumber