13 Mayıs 2008 Salı

PHP de Permalink Yapma

Merhaba gönül dostları (iykkk) . Ne zamandır forumlarda bakıyorum bakıyorum bakıyorum ve sürekli sorulan soruyu güroyurm Permalink nasıl yapılır? Permalink yani Türkçe değişiyle Kalıcı Bağlantı... Öncelikle anlatımı geçmeden önce ne işe yarar ondan biraz bahsedelim. Permalink sayesinde biliyorsunuz ki Ulu Üstad Google :D sitemize bir kıyak geçerek( bilinenlere göre ) arama motorunda üst sırada çıkmamızı sağlıyor. Biliyorsunuzdur aynı içerikli www.siteadi.com/film-indir.html , www.siteadi.com/hedele.html gibi iki sayfada film indir kelimesinde ilk sayfa daha önce çıkar.

Şimdi gelelim ne şekilde bir yöntem izleyeceğiniz. Makaleye başlamadan önce şunu garanti ediyorum ki birazcık küçücük bir php bilgisiyle sizde herhangi bir scripte ait sitenizdeki linkleri permalayabileceksiniz

Kullancağımız modül Bkz. Mod_Rewrite. Öncelikle www.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=$1&baslik=$2 de de sıra ile $1 inci kısım yani query stringdeki ID nin ilk (.*) a, $2 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 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 :)

hah ş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 < href =" " id="<"> > diye gosterdiğiniz linkleri < href =" ">-< ? e c ho $yazibaslik ; ? > > yapacaksınız bu kadar yani azcık php bilginiz varsa bunuda yaaprsınız artık .

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ü ) Neyse kullanımıda basit zaten $yenibaslik = permayap($eskibaslik)

Yazar: Erhan Harmankaya