Menyambung artikel sebelumnya, kali ini kita akan membuat konfigurasi Virtual Host agar setiap request yang masuk langsung diarahkan ke domain utama.
Pertama, edit file konfigurasi default apache: /etc/apache2/sites-available/default
Ubah nilai NameVirtualHost dan VirtualHost menjadi *

$ sudo pico /etc/apache2/sites-available/default

sehingga menjadi:

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Kemudian buat file konfigurasi Virtual Host baru untuk domain kita.

$ sudo pico /etc/apache2/sites-available/situskita.tld

Kita akan menambahkan ServerAlias yang akan mengarahkan semua request *.situskita.tld ke domain utama.Dan arahkan DocumentRoot ke lokasi kerja anda.

<VirtualHost *>
ServerAdmin webm...@situskita.tld
ServerAlias *.situskita.tld¬ ¬ ¬ situskita.tld
DocumentRoot /home/vandai/workspace/situskita/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/vandai/workspace/situskita/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2′s default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride none
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ “/usr/share/doc/”
<Directory “/usr/share/doc/”>
Options Indexes MultiViews FollowSymLinks
AllowOverride none
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Simpan kemudian restart server apache.

$ sudo /etc/init.d/apache2 force-reload

Buka browser, dan ketikkan www.situskita.tld di alamat browser anda. Juga ketikkan berbagai macam variasi subdomain, seperti test.situskita.tld, coba.situskita.tld, aaaa.situskita.tld, dan lainnya. Jika halaman yang dimunculkan sama dan sesuai dengan project situs kita, maka kita sudah berhasil membuat subdomain wildcard ini.

Sekarang bagaimana kita bisa menampilkan halaman untuk member tertentu sesuai dengan subdomainnya?
Gampang saja, kita tinggal menangkap nilai subdomain tersebut melalui kode PHP dengan menggunakan variable $_SERVER["SERVER_NAME"]
Contoh penggunaannya:

<?
echo “URL: “.$_SERVER["SERVER_NAME"].”<br />”;

$HOST = explode(“.”,$_SERVER["SERVER_NAME"]);
$USER = $HOST[0];

echo “USER Subdomain: “.$USER;
?>

Jika kita sudah bisa mendapatkannya ($USER), selanjutnya terserah bagaimana kita memprosesnya. Misalkan subdomain tersebut merupakan username, maka kita tinggal mengecek nya apakah username (dari subdomain) tersebut ada di database, jika ada maka tampilkan halaman khusus milik dia. Jika tidak ada, tampilkan halaman utama, atau langsung tampilkan halaman registrasi.

PENTING! Sebelumnya jangan lupa untuk selalu menyaring nilai yang di dapat dari subdomain tersebut. Ini untuk mencegah terbuka nya celah keamanan, misalnya melalui XSS, SQL Injection, dan lainnya.

Sampai sini kita sudah bisa membuat subdomain wildcard untuk membedakan halaman masing-masing anggota di mesin development server kita sendiri. Selanjutnya jika kita ingin mempublikasi kan situs kita melalui provider hosting lain, kita harus memastikan ke pihak Hosting Provider nya, apakah mereka mendukung Subdomain Wildcard.

Setiap Hosting Provider bisa jadi berbeda untuk setingan Subdomain Wildcard nya.
Contohnya di Hosting Provider tempat saya hanya tinggal membuat subdomain baru dengan nama “_.akemapa.com” maka setiap request subdomain (misalkan test.akemapa.com,xxx.akemapa.com) akan diarahkan ke folder site _.akemapa.com kecuali untuk subdomain yang sudah ada. Jadi jika saya sudah memiliki subdomain “mail.akemapa.com” maka yang akan ditampilkan tentu nya halaman dari folder site “mail.akemapa.com”, tetapi untuk subdomain yang tidak ada secara fisik, akan diarahkan ke “_.akemapa.com”. Nah di folder site ini lah situs utama kita disimpan.

Hubungi bagian Technical Support Hosting Provider anda untuk lebih jelas mengenai subdomain ini.
Jika anda menggunakan server sendiri tentu nya akan lebih mudah lagi. Karena kita bisa mendapatkan kontrol penuh sesuai dengan keinginan kita.

– end –