[Tips] Membuat Multi Subdomain dan Memetakan dalam Database

Kita tentu sering menggunakan fasilitas blog dengan support subdomain, seperti wordpress.com, atau blogger.com dengan layanan blogspot.com dan lain sejenisnya. Ketika mendaftarkan sebuah blog, maka kita akan diberikan sebuah blog dengan subdomain seperti yang kita daftarkan, seperti contoh: http://bimosaurus.wordpress.com. Sedangkan kita tahu bahwa biasanya proses pembuatan subdomain atau domain saja memerlukan waktu propagasi yang cukup lama, namun dalam pembuatan blog, bisa langsung. Kok bisa?

 

DNS

Untuk masalah DNS kuncinya adalah pada DNS pointernya. Selama DNS Server kita mendukung penggunaan wilcard DNS, maka tidak akan masalah. Setiap subdomain akan langsung diarahkan ke web kita tersebut. Wilcard DNS akan ditandai dengan tanda *. Untuk anda pengguna linux console dapat melakukan pointing wilcard seperti demikian

  IN   A   IP_ADDRESS
* IN   A   IP_ADDRESS

dns

Disana artinya bahwa untuk seluruh subdomain dari domain anuanucoba.com akan diarahkan ke IP Address 111.111.222.222. Artinya segala akses semua subdomain akan diarahkan pada IP Address tersebut. Bisa juga IP tersebut adalah komputer yang digunakan untuk DNS itu sendiri. Selanjutnya, setelah data tersebut terarah ke IP Address itu, segala request web akan dilayani oleh Webserver (Apache, LightHTTPD, HTTPD dsb). Setelah membentuk wilcard DNS, proses propagasi hanya untuk propagasi wilcardnya. Sehingga setelah proses propagasi (penyebaran domain ke server server DNS) itu selesai, seluruh subdomain akan dianggap sama dengan wilcard DNS. Untuk yang biasa dengan setting WordPressMU tentu telah terbiasa cara ini.

 

Setting Virtual Host Multisubdomain

Setelah request protokol web diterima webserver, maka selanjutnya tugas selanjutnya adalah memetakan request web tersebut pada script atau direktori kerja (working directory / DocumentRoot) yang dimaksud. Semua itu diatur dalam Virtual Host. Fasilitas Virtual Host ini memungkinkan satu server dapat dihuni oleh banyak situs atau aplikasi web dengan domain tertentu:


ServerName anuanucoba.com
ServerAlias *.anuanucoba.com
DocumentRoot /var/www/anuanucoba
ServerAdmin bimosaurus@gmail.com


Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>


Setting Virtual Host disini bermaksud untuk:

  1. Memberi nama situs
  2. Memetakan request nama domain ke direktori tertentu
  3. Memberikan nama alias dari situs
  4. Melakukan setting konfigurasi akses kontrol DocumentRoot

Perhatikan pada Alias. Alias tersebut diisikan * (wilcard) dengan maksud untuk memetakan akses, jika akses ke sembarang subdomain maka akan diarahkan ke direktori kerja/documentroot yang sama. Cobalah isikan index.php atau index.html di dalam direktori tersebut. Untuk sementara jika diakses aaa.[domain] akan masih sama dengan jika akses tanpa subdomain.

 

Menangkap Subdomain pada Aplikasi Web PHP

PHP memiliki cara sendiri untuk menangkap nama situs, yaitu dengan menggunakan variable array $_SERVER. Cobalah ketikkan baris ini pada index.php anda (bukan index.html).

Ketika web anda tersebut diakses dengan menggunakan subdomain misal : a.anuanucoba.com, maka PHP akan menangkap bahwa SERVER_NAME adalah a.anuanucoba.com. Jika anda mengaksesnya dengan menggunakan b.anuanucoba.com maka akan muncul b.anuanucoba.com.

Tugas kita selanjutnya adalah memisahkan subdomain. Banyak teknik yang bisa digunakan untuk menangkap subdomain tersebut. Namun saya lebih suka menggunakan cara demikian:

$servername = $_SERVER['SERVER_NAME']; // menangkap servername

$rservername = explode( '.' , $servername );  //memisahkan string dari servername berdasar titik

$r = array_reverse( $rservername ); //membalik array yang depan menjadi belakang

$domain = $r[1] . " . " $r[0];

$subdomain = $r[2];

define ('SUB_DOMAIN',$subdomain) ; //mendefinisikan menjadi variable yang tetap bisa dibaca ketika register_global = off
define ('DOMAIN',$domain) ;

 

Selanjutnya masukkan baris script tersebut menjadi sebuah file : subdomain_mapping.php. Anda pun bisa mengarahkan variable subdomain tersebut mengarah ke database anda. Sebagai contoh jika saya memiliki tabel bernama “domain_map” berisi:

subdomain content
bimosaurus1 anu ini mencoba content1
bimosaurus2 anu ini mencoba content2
bimosaurus3 anu ini mencoba content3
bimosaurus4 anu ini mencoba content4
bimosaurus5 anu ini mencoba content5

Maka kita bisa membuat sebuah script dalam index.php seperti demikian:

if(mysql_connect('localhost','root','pass')){
   mysql_select_db( 'multisubdomain' );
}else{
   echo "gagal membuka database";
}

$subdomain = SUB_DOMAIN;
$domain = DOMAIN;

if( file_exists( 'subdomain_mapping.php' ) ){ include 'subdomain_mapping.php'; }else{ echo 'error'; }

$sql = "select * from `domain_map` WHERE subdomain = '$subdomain'";
$q = mysql_query( $sql );
$r = mysql_fetch_array( $q );

echo $r['content'];

Cobalah melakukan akses dengan nama-nama subdomain yang ada pada table.

TIPS TRIK.
Jika kita tidak bekerja pada server yang sebenarnya, maka anda bisa bermain dengan membuat bind sendiri dengan diarahkan pada localhost anda, dengan IP Address diarahkan menjadi 127.0.0.1 dan memaksa akses host dengan mengubah file /etc/hosts menjadi ditambah :

127.0.0.1 namadomainanda

Untuk Windows (dulu) melalui file : C:\Windows\System32\Driver\etc\hosts . Kalau sekarang saya tidak tahu, karena saya bukan pengguna windows 😀

 

Tambahan Tips

Bagi anda pengguna CPANEL dapat langsung diarahkan seperti demikian:

Tentukan nama subdomain, dan langsung bentuklah wilcard DNS dan langsung diarahkan ke documentRoot pada form isian yang disediakan.

 

 

dns1 img2

Langkah-langkah ini sangat berguna untuk Developer Social Media dan Blog Developer.

Sekian.. Semoga bermanfaat.. Jangan lupa sebarkan ulang artikel ini tapi hendaklah ditulis ulang bukan disalin, agar anda juga langsung terasa ilmunya 😀

One thought on “[Tips] Membuat Multi Subdomain dan Memetakan dalam Database

Leave a Reply

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