Dinamik HTACCESS mod_rewrite PHP fonksiyonu - PHP Webmaster bilgi bankası, knowledge base Webmaster Araçları

AnaSayfa > PHP > Dinamik HTACCESS mod_rewrite PHP fonksiyonu
Kategori: PHP
Gönderen: Admin
Tarih: 2009-02-19
Puan: 3   Puan:3 | Katılımcı:2 | Katılımcı : 2
Okunma: 4887
  
 
1 puan 2 puan 3 puan 4 puan 5 puan 6 puan 7 puan 8 puan 9 puan 10 puan

Bildiğimiz gibi PHP htaccess ile seo yazarken en büyük problemimiz htaccess'e sürekli RewriteRule eklemektir.
Bunu düşündük ve yeni bir algoritma geliştirdik. pehepe.org farkıyla şimdi kodumuzu yayınlıyoruz

htaccess.php:
<?

/////////////////////////////////////////////////////////////////////////////////////
define('HTACCESS',1); //HTAAccess açık
define('HTACCESS_QS_KEY_AYRAC','.'); //index/~"adi.soyadi"/fatih-akin.htm
define('HTACCESS_QS_VAL_AYRAC','-'); //index/~adi.soyadi/"fatih-akin".htm
define('HTACCESS_QS_UZANTI','html'); //index/~adi.soyadi/fatih-akin."htm"
/////////////////////////////////////////////////////////////////////////////////FKA/

function HTAString($arr,$uzanti=HTACCESS_QS_UZANTI) {
$qs='';
foreach($arr as $d=>$v) {
$qsa.=urlencode($d).HTACCESS_QS_KEY_AYRAC;
}
$qsa = trim($qsa,HTACCESS_QS_KEY_AYRAC);

foreach($arr as $d=>$v) {
$qsb.=urlencode($v).HTACCESS_QS_VAL_AYRAC;
}
$qsb = trim($qsb,HTACCESS_QS_VAL_AYRAC);

return $qsa."/".$qsb.".".$uzanti;
}

function hta2qs($htqs) {
$qs = explode("/",$htqs);
$keyler = explode(HTACCESS_QS_KEY_AYRAC,$qs[0]);
$degler = explode(HTACCESS_QS_VAL_AYRAC,$qs[1]);
if(count($keyler)!=count($degler)) {
$fark = abs(count($keyler)-count($degler));
if(count($keyler)<count($degler)) {
for($i=0;$i<$fark;$i++) {
array_push(&$keyler,"");
}
}
else if(count($keyler)>count($degler)) {
for($i=0;$i<$fark;$i++) {
array_push(&$degler,"");
}
}
}
$sonarray = array_combine($keyler, $degler);
foreach($sonarray as $k=>$v) {
$_GET[$k]=$v;
}
unset($_GET['HTAQS']);
unset($_GET['']);
return array($sonarray);
}

function href($str) {
$orstr = $str;
$parca = explode("?",$str);
$dosya = rtrim($parca[0],".php");
$qs = $parca[1];
$qs = explode("&",$qs);
$keyler = array();
$valler = array();
for($i=0;$i<count($qs);$i++) {
$keyval = explode("=",$qs[$i]);
$key = $keyval[0];
$deger = $keyval[1];
array_push(&$keyler,$key);
array_push(&$valler,$deger);
}
if(HTACCESS==1) {
return
"http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$dosya."/~".HTAString(array_combine($keyler,$valler));

}
else {
return "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$orstr;
}
}

hta2qs($_GET['HTAQS']); //Hangi değer
?>


.htaccess:

<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ı:

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]</span>


şimdi kullanımına geçelim:

Kod

<?

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





Yorumlar
Henüz Kimse Yorum Yapmamış, ilk yorumu siz ekleyin!
Yorum Ekleme Aparatı
Yorum Eklemek için lütfen sol menuden giris yapınız..
Toplam 0 yorum listelendi.