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