Kodlama Dili : PHP
Kısa Açıklama : Bu makalemizde dinamik htaccess mod_rewrite php fonksiyonu hakkında bilgi edineceÄŸiz. BildiÄŸimiz gibi PHP htaccess ile seo yazarken en büyük problemimiz htaccess’e sürekli RewriteRule eklemektir. PeHePe ekibini bunu düşünerek bir algoritma geliÅŸtirmiÅŸtir.
KOD :
>> Oluşturacağımız htaccess.php dosyasının kodları aşağıdaki gibidir :
<?
/////////////////////////////////////////////////////////////////////////////////////define(‘HTACCESS’,1); //HTAAccess açıkdefine(‘HTACCESS_QS_KEY_AYRAC’,‘.’); //index/~”adi.soyadi”/fatih-akin.htmdefine(‘HTACCESS_QS_VAL_AYRAC’,‘-’); //index/~adi.soyadi/”fatih-akin”.htmdefine(‘HTACCESS_QS_UZANTI’,‘html’); //index/~adi.soyadi/fatih-akin.”htm”function HTAString($arr,$uzanti=HTACCESS_QS_UZANTI)Â
{$qs=”;$arr as $d=>$v)Â
{$qsa.=urlencode($d).HTACCESS_QS_KEY_AYRAC;$qsa = trim($qsa,HTACCESS_QS_KEY_AYRAC);$arr as $d=>$v) {$qsb.=urlencode($v).HTACCESS_QS_VAL_AYRAC;$qsb = trim($qsb,HTACCESS_QS_VAL_AYRAC);$qsa.“/”.$qsb.“.”.$uzanti;hta2qs($htqs) {$qs = explode(“/”,$htqs);$keyler = explode(HTACCESS_QS_KEY_AYRAC,$qs[0]);$degler = explode(HTACCESS_QS_VAL_AYRAC,$qs[1]);count($keyler)!=count($degler)) {$fark = abs(count($keyler)-count($degler));count($keyler)<count($degler)) {$i=0;$i<$fark;$i++) {array_push(&$keyler,“”);count($keyler)>count($degler)) {$i=0;$i<$fark;$i++) {array_push(&$degler,“”);$sonarray = array_combine($keyler, $degler);$sonarray as $k=>$v) {$_GET[$k]=$v;$_GET['HTAQS']);$_GET['']);$sonarray);href($str) {$orstr = $str;$parca = explode(“?”,$str);$dosya = rtrim($parca[0],“.php”);$qs = $parca[1];$qs = explode(“&”,$qs);$keyler = array();$valler = array();$i=0;$i<count($qs);$i++) {$keyval = explode(“=”,$qs[$i]);$key = $keyval[0];$deger = $keyval[1];array_push(&$keyler,$key);array_push(&$valler,$deger);HTACCESS==1) {“http://”.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).“/”.$dosya.“/~”.HTAString(array_combine($keyler,$valler));“http://”.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).“/”.$orstr;hta2qs($_GET['HTAQS']); //Hangi deÄŸer?>
    foreach(
    }
    foreach(
    }
    returnÂ
}
functionÂ
    if(
    if(
    for(
    }
    }
    else if(
    for(
    }
    }
    }
    foreach(
    }
    unset(
    unset(
    return array(
}
functionÂ
    for(
    }
    if(
    return
    }
    else {
    returnÂ
    }
}
>> Oluşturacağımız .htaccess dosyasının kodları aşağıdaki gibidir :
<Files ~ ”^.(htaccess|htpasswd)$”>
deny from all
</Files>
Options +Indexes +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)\/\~(.*).htm$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).html$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).xhtml$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).shtml$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).asp$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).aspx$ $1.php?HTAQS=$2 [L,NC]
DirectoryIndex index.php index.html default.html default.php home.php  Â
order deny,allow
>> Ya da htaccess dosyasına eklemeniz gereken rewriteRule kodları aşağıdaki gibidir. Sadece bu kodları eklediğiniz takdirde, tüm linkleriniz modifiye olur :
RewriteRule ^(.*)\/\~(.*).htm$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).html$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).xhtml$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).shtml$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).asp$ $1.php?HTAQS=$2 [L,NC]
RewriteRule ^(.*)\/\~(.*).aspx$ $1.php?HTAQS=$2 [L,NC]
Uygulama şekli ise aşağıdaki gibidir :
<?include(“htaccess.php”);print_r($_GET); //iÅŸte kanıt:)?>
Â
Â
Â
<a href=”<?=href(‘index.php?kategori=oyunlar’)?>“>index.php?kategori=oyunlar</a>
Görüldüğü gibi linkimizi orjinal haliyle yazdık. Fakat tıkladığımızda adres çubuğunda görülecek olan adres :
index/~kategori/oyunlar.html
Çeviri şeklini daha iyi anlamanız için :
uyeler.php?uyeID=12345Â =>Â uyeler/~uyeID/12345.html
sayfa.php?Kategori=Fikralar => sayfa/~Kategori/Fikralar.html
ara.php?Nerde=Google.com&Sozcuk=PHPÂ =>Â ara/~Nerde.Sozcuk/Google.com-PHP.html
kategoriler.php?ID=1243Â =>Â kategoriler/~ID/1243.html