PHP SEF Link Nasıl Yapılır

selim tarafından 23 Aralık 2009 tarhinde postalanmış..

Bu yazımda biraz PHP’deki SEF link olayından bahsetmek istiyorum. Script kodlarken artık önemli bir detay olarak görülüyor SEF link yapısı. Peki nedir bu SEF link dediğimiz olay. Açılımı Search Engine Friendly olan SEF, SEO dostu bir scriptte bulunması gereken olmazsa olmaz yapıdır. Yani link yapımızı arama motoru dostu bir yapıya çevirmektir. Arama motorları tarafından daha anlamlı olmasıdır linklerin.

Normalde bir script yazdığınızda ‘detay.php?id=1′ şeklinde bir yapıya sahip olur. Bunun google için hiçbir anlamı yoktur açıkcası. Biz bu yapıyı ‘haber-basligi.html’ şeklinde kelimelerden oluşan bir yapı ile listeleteceğiz. Bu şekilde her yazımızın adı urlde geçmiş olacak ve ilk durumdan daha anlamlı bir hale gelecektir linklerimiz. Bunun için öncelikle .htaccess dosyası oluşturmamız gerekiyor. Boş bir text dosyasına linklerimizi nasıl kullanacağımızı belirten kodları yazıyoruz ve .htaccess olarak kaydederek sitemizin bulunduğu dizine atıyoruz.

Kullanabileceğiniz örnek kod;


Options +FollowSymLinks
RewriteEngine on

RewriteRule ^haber-(.*)-(.*).html$ detay.php?id=$1&baslik=$2 [L,NC]

Bu şekilde kullandığımızda linklerimiz haber-1-haber-baslik.html şeklinde olacaktır. Siz isterseniz .htaccess dosyanızda yapacağınız değişikliklerle bu yapıyı değiştirebilirsiniz. Bu işlemden sonra artık link yapısını ayarlamaya geldi sıra.

Normalde;

<a href=”detay.php?id=<?php echo $row_Recordset1['id']; ?>”><?php echo $row_Recordset1['baslik']; ?></a>

şeklinde olan yapıyı

<a href=”haber-<?php echo $row_Recordset1['id']; ?>-<?php echo $row_Recordset1['baslik']; ?>.html”><?php echo $row_Recordset1['baslik']; ?></a>

şekline dönüştürüyoruz.

Artık işlem tamam. Şu anda listeleme yaptığınızda linklerimiz detay.php?id= şeklinde değil de haber-3-baslik.html şeklinde olacaktır. Kalan son bir eksik yanı var şu an. Başlık eğer Türkçe karakter ya da boşluk karakteri içeriyorsa bu urlde kullanıldığında pek sağlıklı olmayacaktır. Bu yüzden bu boşlukları, sembolleri, Türkçe karakterleri bir fonksiyonla uygun bir hale getireceğiz.

function turkceyap($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;
}


Fonksiyonumuzu tamamladıktan sonra bu fonksiyonumuzu echo kısmında kullanıyoruz. Bunu da şu şekilde basitce yapabiliriz.

<?php $yenibaslik = turkceyap($row_Recordset1['baslik']); echo $yenibaslik; ?>

Evet artık bu işlem de tamam. Linklerimizde ne Türkçe karakter ne de boşluk veya özel karakterler olacaktır. Ve artık SEO dostu SEF linklere sahibiz…

 

“PHP SEF Link Nasıl Yapılır” için 3 yorum yazılmış

  1. Halilcan AKÇAY demiş ki:

    gercekten güzel anlatım olmuş. Cok teşekkürler ;)

  2. kemsay demiş ki:

    bazı sistemlerde görüyorum ;
    http://www.siteadı.com/Anasayfa
    http://www.siteadi.com/Konu-icerik-bilgi.html
    siye bundan da bahsedermisiniz sadece sayfa ici ni göstermissiniz?

  3. selim demiş ki:

    Merhaba kemsay ~

    Sanırım demek istediğin sadece başlık yazsın, id falan yazmasın demek istiyorsun. Bunun mantığından da bahsedim. Bunun için haberleri eklediğimiz tablomuza bir alan daha ekliyoruz. Bu alana başlığın seolu halini ekliyoruz. Örneğin, “Selim balığa çıkacak” yazısı için bu yeni eklediğimiz alana “selim-baliga-cikacak” şeklinde bir ifade ekletiyoruz. Yukarıdaki fonksiyonumuzu burada da aynen kullanabiliriz. Daha sonra da haberleri çekeceğimiz zaman idye göre değil de bu sonradan eklediğimiz seolu başlığımızın olduğu alana göre çekiyoruz. Bu sistemin bazı dezavantajları da var tabi. Aynı başlıktan 2 haber girilirse sistem biraz saçmalayabilir. Bunu da gene kodları geliştirerek, yazi, yazi-2 şeklinde değiştirtebiliriz. Umarım açıklayıcı olmuştur, kolay gelsin…

Yorumları alalım...