Contoh kasus yang sering digunakan adalah tiap member sebuah situs memiliki subdomain sendiri, atapun reseller menggunakan username sebagai subdomain. Magicnya ada di tiga bagian, pertama di DNS, kedua di VHOST, ketiga di script.

DNS WILDCARD

Set DNS Wildcard, bisa untuk domain ataupun subdomain, contohnya

*.web.jaranguda.com    IN    A    192.168.1.1

Di Cloudflare caranya seperti gambar dibawah
setting dns wildcard cloudflare

Setting VHOST APACHE

Webserver yang digunakan tidak terlalu berpengaruh, selama dia bisa menghandle wildcard. Disini saya menggunakan Apache 2.4 di Fedora 31. File konfigurasinya berada di /etc/httpd/conf.d/vhost.conf isinya

<VirtualHost *:80>
  DocumentRoot /home/tommy/git/php-vhost/
  ServerName web.jaranguda.com
  ServerAlias *.jaranguda.com
 
  <Directory "/home/tommy/git/php-vhost">
    Options -Indexes
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
 
</VirtualHost>

cara ini tidak hanya untuk subdomain, tetapi bisa juga untuk domain. Sebagai contoh anda domainer, ingin menampilkan nama domain, dan harga yang ditentukan di setiap domain, cukup dengan satu script ratusan bahkan ribuan domain langsung bisa dihandle.

Script PHP

Logika untuk scriptnya, kita membuat beberapa domain yang diijinkan, bisa dari database atau dibuat dalam array. Bila user mengunjungi subdomain yang tidak diijikan akan ditampilkan pesan error. Script inilah yang bertugas menampilkan situs sesuai dengan peruntukannya. Saya namai script ini index.php (/home/tommy/git/php-vhost/index.php) begini scriptnya

<?php
// subdomain yang diijinkan
$allowedSubdomain = ['email', 'ftp', 'payment'];
$subdomain = explode('.web.jaranguda.com', $_SERVER['HTTP_HOST']);
 
if(in_array($subdomain[0], $allowedSubdomain)) {
    echo "<b>$subdomain[0]</b> allowed!";
} else {
    echo "<b>$subdomain[0]</b> rejected! not in whitelist domain!";
}
 
var_dump($_SERVER['HTTP_HOST']);

Coba buka namaasal.web.jaranguda.com, akan muncul tampilan
subdomain not whitelisted
sekarang buka email.web.jaranguda.com
subdomain allowed

Leave a comment

Your email address will not be published. Required fields are marked *