sanal sunucuya (vps) geçiş

merhaba, artık serkanozcan.com ve bundan sonra oluşturacağım projeler için almanya’da bir sanal sunucum var. sunucuya windows işletim sistemi kurduğum için siteyi sunucu üzerine alırken epey zorluklar çıktı ama sonunda bütün sorunları çözmeyi başardım.
vps1
öncelikle vps nedir, faydaları nelerdir onlardan bahsedeyim. fiziksel sunucuyu bir devlet gibi, sanal sunucuları da bu devletin eyaletleri gibi düşünebilirsiniz. bir fiziksel sunucu birden fazla sanal sunucu barındırabilir. bu sanal sunucular fiziksel sunucunun bellek, işlemci ve sabit diskinin belli bir parçasını sadece kendileri kullanırken fiziksel sunucunun geri kalan bileşenlerini diğer sanal sunucularla ortak kullanır. sanal sunucular, gerçek bir sunucu gibi işletim sistemine sahiptir. bu nedenle klasik web hosting paketlerinde size sunulanı kabul etmeniz gerekirken sanal sunucu üzerinde her türlü programı kurabilir, sunucu ayarlarınızı değiştirebilirsiniz. güvenlik tamamen sizin elinizdedir. yasaları siz koyarsınız. her sanal sunucunun kendine özel bir ip adresi mevcuttur.
benim sunucunun global ip adresi 46.20.34.210 olarak belirlenmiştir.

şimdi karşılaştığım url rewrite sorununu anlatayım size. sunucuya windows 2003 işletim sistemi kurduğum için sunucuda iis6 mevcut. iis6 ile web.config üzerinden url rewrite yapamıyorsunuz. ancak ISAPI_Rewrite gibi özel bir yazılım kurarsanız bunu yapabiliyorsunuz. ben de sunucu üzerine plesk kontrol paneli kurduğum için isapi özelliği otomatik olarak geldi. fakat ur rewrite olayını sunucuya erişip çözmek istemedim. sadece serkanozcan.com ile ilgili bir çözüm geliştirdim. şu an serkanozcan.com üzerinde oluşan url yapısında hangi dosyaya erişeceği yazmadığı için sistem 404 dosya bulunamadı hatası alıyordu. ben de sitenin custom error sayfasını değiştirerek php ile kod geliştirdim. sonra bu custom error dosyasını blog klasörümün içerisine koydum. böylece sistemin çözemediği url’leri yazdığım kodla ben çözdüm.

oluşturduğum 404.php dosyasının kodları aşağıdaki gibidir;

<?php
$default = 'index.php';
$thisfile = '404.php';
 
$_SERVER['SCRIPT_FILENAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_FILENAME']);
$_SERVER['ORIG_PATH_INFO'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_INFO']);
$_SERVER['SCRIPT_NAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_NAME']);
$_SERVER['PHP_SELF'] = str_replace($thisfile, $default, $_SERVER['PHP_SELF']);
$_SERVER['PATH_INFO'] = false;
 
$qs =& $_SERVER['QUERY_STRING'];
$ru =& $_SERVER['REQUEST_URI'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['URL'] = $ru = substr($qs, $pos);
$qs = trim(stristr($ru, '?'), '?');
 
$_SERVER['HTTP_X_ORIGINAL_URL'] = $ru;
 
foreach ( $_GET as $var => $val ) {
if ( substr($var, 0, 3) == '404') {
if ( strstr($var, '?') ) {
$newvar = substr($var, strpos($var, '?') + 1);
$_GET[$newvar] = $val;
}
unset($_GET[$var]);
}
break;
}
include($default);