|  | 
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 | : 5  | Katılımcı : 3 |  | Okunma | : 5438 |  |  |  |  |  |  |  |  | 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. | 
 |