.htaccess ile otomatik subdomain oluÅŸturma
Hi5.com ve benzeri sitelerde görüleceÄŸi üzere, üye olan her kullanıcı subdomain sahibi olabilmekte.
Åžimdi otomatik subdomaini manual oluÅŸturmaktan baÅŸka olarak iki ÅŸeyden bahsedeceÄŸim.
1. .htaccess ile:
RewriteEngine On RewriteCond %{HTTP_HOST} ^([^\.]+)\.bildirgec\.org$ [NC] RewriteCond %1 !^(www|ftp|mail)$ [NC] RewriteRule ^.*$ http://www.bildirgec.org/uye.php?kullaniciadi=%1 [R,L]
GörüldüÄŸü gibi www, ftp, mail haricinde tüm kullanıcı adları için subdomain oluÅŸturulabilecektir. Yalnız iÅŸlem bu kadar basit olabileceÄŸi gibi bu kadar kolay da olmayabilir. DNS ayarları gerekebilir.
DNS ayarları: DNS Functions > Edit DNS Zone kısmında DNS: *.bildirgec.org (ya da sadece *) TTL: 14400 IN: IN Record Type: A (Kayıt Türü) ÅŸeklinde ayarlanır.
Bu ayar ile subdomain’lerin hostunuzun bulunduÄŸu ip adresine düÅŸmesi saÄŸlanır. Ayrıca Host firmanızın DNS wildcard‘ı aktifleÅŸtirmiÅŸ olması gerekmektedir.
Bu tüm subdomain’lerin hesabınıza yönlenmesini saÄŸlayacaktır. Bu iÅŸlem de ServerAlias direktifleri ile httpd.conf ile yapılır.
httpd.conf ayarı: <VirtualHost 255.255.255.0> DocumentRoot /home/username/public_html ServerName www.bildirgec.org ServerAlias bildirgec.org ServerAlias *.bildirgec.org </VirtualHost>
2. PHP’de CPanel ile EtkileÅŸerek: Siteniz PHP dilini destekliyorsa
<?php define(’CPANELKADI’,'cpanel_kullanici_adini_buraya_giriniz’); define(’CPANELPAROLA’,'cpanel_parolasini_buraya_giriniz’); define(’METIN_DOSYA’,'altalan.txt’); // istersek alt alan adlarını bir txt dende çekebilirsiniz define(’CPANEL_SABLON’,'rvblue’); // Türkçe cpaneller genelde rvblue dür ancak ingilizce ise genellikle x kullanılır. Tam olarak öÄŸrenmek için cPanelinize giriniz ve urlde frontend/ ifadesinden sonra ne yazdığına bakınız. define(’DOMAIN’,’siteadresi.com’); function getVar($ad, $def = ”) { if (isset($_REQUEST[$ad]) && ($_REQUEST[$ad] != ”)) return $_REQUEST[$ad]; else return $def; } $cpanelkadi=getVar(’cpanelkadi’, CPANELKADI); $cpanelparola=getVar(’cpanelparola’, CPANELPAROLA); $cpanel_sablon = getVar(’cpanelsablon’, CPANEL_SABLON); if (isset($_REQUEST[”subdomain”])) { $doms = array( getVar(’domain’, DOMAIN) . “;” . $_REQUEST[”subdomain”]); if (getVar(’domain’, DOMAIN) == ”) die(”Geçersiz kullanıcı adı”); } else { $doms = @file(METIN_DOSYA); if (!$doms) { echo ” Metin dosyası bulunamadı. Lütfen bilgileri manuel giriniz.
<form method=’post’> Altalan (Subdomain):<input name=’subdomain’> Domain:<input name=’domain’><br> cPanel Kullanıcı Adı:<input name=’cpanelkadi’><br> cPanel Parola:<input name=’cpanelparola’><br> cPanel Åžablon:<input name=’cpanelsablon’><br><br>Türkçe cpaneller genelde rvblue dür ancak ingilizce ise genellikle x kullanılır. Tam olarak öÄŸrenmek için cPanelinize giriniz ve urlde frontend/ ifadesinden sonra ne yazdığına bakınız.<br><br> <input type=’submit’ value=’Yarat’ style=’border:1px solid black’> </form>”; die(); } } function subd($host,$port,$sahibi,$parolaci,$talep) { $sock = fsockopen(’localhost’,2082); if(!$sock) { print(’Socket error’); exit(); } $yetkilendir = “$sahibi:$parolaci”; $pass = base64_encode($yetkilendir); $in = “GET $talep\r\n”; $in .= “HTTP/1.0\r\n”; $in .= “Host:$host\r\n”; $in .= “Authorization: Basic $pass\r\n”; $in .= “\r\n”; fputs($sock, $in); while (!feof($sock)) { $sonuc .= fgets ($sock,128); } fclose( $sock ); return $sonuc; } foreach($doms as $dom) { $satirlar = explode(’;’,$dom); if (count($satirlar) == 2) { $domain = trim($satirlar[0]); $subd = trim($satirlar[1]); } else { $domain = getVar(’domain’, DOMAIN); $subd = trim($satirlar[0]); } $talep = “/frontend/$cpanel_sablon/subdomain/doadddomain.html?rootdomain=$domain&domain=$subd”; $sonuc = subd(’localhost’,2082,$cpanelkadi,$cpanelparola,$talep); $goster = strip_tags($sonuc); //teknik bilgi. scriptlerinizde echo yaptırmayın. echo $goster; } ?>
kodu ile oluÅŸturabilirsiniz. Bu ÅŸekilde subdomain oluÅŸturulabiliyor fakat iÅŸlem bir hayli yavaÅŸ sürebiliyor.
Ben CPanel için PHP kodlarını denedim, DNS Zone’da *.domain.com ekleyerek subdomain’leri ip’ye düÅŸürmeye baÅŸardım fakat httpd.conf’a eriÅŸimim olmadığı için ayarlamasını yapamadım. Fakat oluÅŸan subdomainler için htaccess çalışmaktadır. Denemekte, kurcalamakta ve araÅŸtırmakta fayda var.
Bu konuyla ilgili olarak Altan Tanrıverdi’nin yazısı okunmalıdır. Yazıda geçen kodlar bu sitede yer almaktadır. DNS ile ve httpd.conf için de buraya bakabilirsiniz.

Yorum Yapin