|
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 | : 5106 | | | |
| | 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. |
|