Permalink Yapımı Php Mod_rewrite Kullanımı
Kullancağımız modül bkz. Mod_rewrite. Önceliklewww. Harmankaya. Org/goster. Php?id=5 gibi bir linki www. Harmankaya. Org/goster-3-yazi-basligi. Html gibi kafamdan bir örnek buluyorum ve başlıyorum. İlk işimiz . Htaccess dosyası kullanarak . Php dosyayı html olarak yorumlamayı göreceğiz bunun için /root altındaki . Htacces dosyasına ekleyeceğimiz kod
Öncelikle en üste Mod_Rewrite modülüne göre link verceğimizi sunucumuza anlatıyoruz
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^goster-(.*)-(.*).html$ goster.php?id=$1&baslik=$2 [L,NC]
Yukarda gördüğünüzüzere goster-(.*)-(.*) daki her (.*) için bir değer atayabileceğimi söylüyorum. id=&baslik= de de sıra ile inci kısım yani query stringdeki ID nin ilk (.*) a, kısım yani baslik kısmınıda ikinci (.*) atayacağımı belirttim.
Yani .htaccess dosyasına bunları yazıp /root a attıktan sonra bilgisayarınızın tarayıcısından www.sitenizadi.com/goster-3-yazi-adi.html ye girerseniz girdiğiniz değer sunucuda goster.php?id=3&baslik=yazi-adi şeklinde yorumlanır.
Yani sözün özü burda aslında bir cinlik yapıyoruz biz Laughing aslına bakarsanız goster-3-yazi-adi.html yerine goster-3-oylesine-bir-baslik-iste.html de yazsam goster-3-dfdsf8dsf9sdfhgkdfsghkjffd.html de yazsam yine de sayfa görüntülenir, Çünkü bizim için mühim olan İD kısmı ID yi atadıktan sonra başlığa ne istrsen yaz :)
Şimdi herşey tamam artık Sunucumuza Yorumlama yeteneği kazandırdıktan sonra linkleri güzelleştirmeye yani aslı Permalink kısmı şimdi başlıyor.
Mesela www.harmankaya.org/yazi.php?id=3 ü permalink yapmadan önce nasıl gösteriyorduk. şöyle değilmi diyelim < a href = " yazi.php?id=< ? e c ho $yaziid ; ? > > diye gosterdiğiniz linkleri < a href = " goster-< ? e c ho $yaziid ; ? >-< ? e c ho $yazibaslik ; ? > > yapacaksınız bu kadar yani azcık php bilginiz varsa bunuda yaaprsınız artık Innocent.
Neyse ama sonra göreceksiniz ki linklerde türkçe karakterlerin veya +%&''^+ şeklinde karakterlerin hatalı çıktığı bununda sayfa görüntülenmesi hatası verdiğini göreceksiniz. Bizde bunun için bir fonksiyon geliştirdik .
function permayap($deger) {
$turkce=array("ş","Ş","ı","(",")","'","ü","Ü","ö","Ö","ç","Ç"," ","/","*","?","ş","Ş","ı","ğ","Ğ","İ","ö","Ö","Ç","ç","ü","Ü");
$duzgun=array("s","S","i","","","","u","U","o","O","c","C","-","-","-","","s","S","i","g","G","I","o","O","C","c","u","U");
$deger=str_replace($turkce,$duzgun,$deger);
$deger = preg_replace("@[^A-Za-z0-9-_]+@i","",$deger);
return $deger;
}
Ne mi yapıyor herhangi bir metindeki boşluk yerine - (tire) koyuyor ayrıca bütün Türkçe karakterlerden arındırıyor ( Ne kötü birşey keşke türkçe karakterleride yorumlayabilsek ben çok seviyorum Ş yi Ç yi Ö yü Embarassed ) Neyse kullanımıda basit zaten $yenibaslik = permayap($eskibaslik)
Kaynak www.harmankaya.org/yazi-75-Permalink-Yapimi-Php-Mod_Rewrite-Kullanimi.html