Pemilik website kadang tidak ingin servernya dapat diakses langsung melalui IP Address. Selain karena alasan keamanan, hal ini juga kadang dipicu oleh alasan ekonomis dan teknis bahwa Sertifikat SSL dari Let’s Encrypt tidak di peruntukan untuk IP Address.
Artikel ini dibuat berdasarkan struktur konfigurasi default apache pada OS Debian. Ada 2 cara yang dapat dilakukan :
Redirect Dengan File .htaccess
Memanfaatkan rewrite pada .htaccess adalah cara yang paling mudah untuk dilakukan. Cukup buat sebuah file .htaccess di directory utama, kemudian tambahkan rule agar akses host yang mengandung ip address di redirect ke domain website tujuan. Contoh rule-nya seperti dibawah ini:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^12\.34\.56\.78$ RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]
yang terpenting adalah baris ke 3 dan 4,
RewriteCond digunakan untuk mendefinisikan sebuah kondisi, pada contoh diatas kondisi dimana HTTP_HOST adalah 12.34.56.78
RewriteRule digunakan untuk mendefinisikan action rewrite. Karena rule ini ditulis pada file .htaccess, apache akan memberikan partial-path untuk dicocokan.
Bagian ^(.*)$ mengambil semuanya (partial-path) dari awal sampai akhir.
http://www.domainname.com/$1 adalah pattern hasil akhir daripada Rule tersebut, adapun tanda $1 diakhirnya akan diganti dengan partial-path yang telah dicocokan sebelum nya, misalnya diakses http://12.34.56.78/cantik.php hasil akhirnya menjadi http://www.domainname.com/cantik.php.
Parameter tambahan (Flag) ditulis dalam kurung siku [] dipisahkan dengan tanda koma, pada kasus diatas:
– L = Last Rule, apache tidak akan memproses rule selanjutnya bila ada
– R = Redirect, pada contoh diatas =301 akan mengirimkan http status code 301 yaitu Redirect Permanently, penjelasan kode redirect selengkapnya dapat dilihat di Wikipedia
Pastikan webserver anda mengizinkan untuk menggunakan .htaccess
Dengan Membuat VirtualHost Default
Membuat virtualhost adalah solusi yang lebih rumit daripada yang diatas, namun jika customer anda ingin agar muncul halaman Warning atau sebuah landing-page ketika websitenya diakses dengan menggunakan IP Address, maka cara ini bisa jadi solusi.
Login ke Server sebagai root, kemudian ikuti langkah langkah dibawah ini:
Masuk ke directory apache
cd /etc/apache2/sites-available
kemudian, buat Backup 000-default.conf
cp ./000-default.conf ./default.conf.bak
Buat sebuah VirtualHost, yaitu dengan meng-copy isi dari file 000-default.conf
cp ./000-default.conf ./domainname.com.conf
Kemudian tambahkan baris berikut ini pada file domainname.com.conf, didalam directive VirtualHost.
ServerName domainname.com
ServerAlias www.domainname.com
kemudian aktifkan virtualhost tersebut dengan perintah dibawah ini
a2ensite domainname.com
Jika tidak ada pesan error maka virtualhost telah berhasil diaktifkan, dan dapat dilanjutkan dengan me-restart apache
systemctl restart apache2
Modifikasi 000-default
000-default adalah file vhost default pada apache, virtualhost ini akan ditampilkan bila user mengakses server dengan alamat ip, atau mengakses dengan domain yang tidak terdaftar di server kita.
Dikarenakan akses dengan ip address adalah hal yang tidak diinginkan oleh si customer maka ada 2 hal yang dapat dilakukan pada file 000-default
Memblok Virtualhost
dengan menambahkan konfigurasi berikut didalam VirtualHost:
<Location /> Require all denied </Location>
Konfigurasi tersebut akan menampilkan pesan Forbidden yang terlihat agak “kotor”.
Menampilkan Halaman Khusus
Menampilkan halaman khusus yang di desain dengan baik membuat tampilan peringatan lebih rapi dan enak dilihat, tempatkan file tersebut di directory DocumentRoot.
Leave a Reply