Otomatik Subdomain Yaratma
Herşeyden önce apache sunucusuna yönelik anlatacağım. Önümüzde 2 yol var: biri . Htaccess, evet şu ünlü htaccess hep kaçtığınız ama artık tamam pes dediğiniz olay; diğeri ise php. (cUrl gibi alternatifler de var ama benim bilgim dahilinde değil)…
İlk olarak .htaccess ile çözüm: Bu tür çözümü yönlendirmeler için kullanıyoruz. Gerçekte yarattığımız bir subdomain yok aslında. İnceleyelim:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.net$ [NC]
RewriteCond %1 !^(www|ftp|mail)$ [NC]
RewriteRule ^.*$ http://www.site.net/profil.php?kullaniciadi=%1 [R,L]
Bu kod ile örneğin http://altan.site.com adresine gelecek talep, http://www.site.net/profil.php?kullaniciadi=altan adresine yönlendirilecektir. Böylece uzun ve şık durmayan urllerden kurtulmuş olacağız. Not: wildcard DNS host servisiniz tarafından aktif edilmiş olmalıdır. ^(www|ftp|mail) ifadeside yönlendirilmeyecek gerçek subdomainleri yazacağınız bölüm.
İkici yolumuz php. Bu sadece cPanel kullanılan sistemlerde çalışır. Ben hostgator kullanıyorum ve yıllardır bu kod sorunsuz işime yarıyor. Bu kod ile hem subdomaini yaratıyor hemde www klasörümüzde subdomain ile aynı ada sahip bir klasör yaratıyoruz. Subdomainde bu klasöre otomatik yönlendirilmiş oluyor.
<?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.<br><br>
<form method=’post’>
Altalan (Subdomain):<input name=’subdomain’><br>
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;
}
?>
Kaynak javam.org/otomatik-subdomain-yaratma/
Yorumunuzu Ekleyin