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 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
sekarang buka email.web.jaranguda.com