January 26, 2006 0

SEF (Search Engine Friendly) linkler nasıl yaratılır ?

Sanat.Pardus güzel görünsün diye başladığım SEF maceramı anlatayım bari :)

 Şimdik,
web programlama da kullandığımız en güzel dillerden biri olan PHP ile
basit bi script yazdık diyelim. Scriptimiz GET metodu ile adres
çubuğundan şu şekilde veri alıyor olsun;
   

    http://www.hede.com/?id=5&pid=18    http://www.hede.com/?id=5&cid=12

    yeterince karışık gözüküyor değil mi ? Bunun yerine şöyle gözükse;

    http://www.hede.com/page/5/18    http://www.hede.com/customer/5/12

   
şimdi güzel oldu :) Peki nasıl yapıyoruz ? Bu iş için Apache ‘nin
nimetlerinden faydalanıyoruz. Nimetimizin adı mod_rewrite ;) Nimet
çalıştıracağınız dosyanın bulunduğu dizindeki “.htaccess” dosyasını
parametre alarak çalışıyor. .htaccess ın nasıl olması gerektiğine
bakmadan önce sunucumuzda mod_rewrite ın yüklü olup olmadığını kontrol
etmek gerek; basit bir phpinfo ile halledebiliriz:

    < ? phpinfo(); ? >    

   
çıktı içerisinde bulunan Apache (ya da Apache2) Handler içindeki Loaded
Modules kısmında mod_rewrite ı görüyorsanız işlem tamamdır.
Göremiyorsanız, Apache ‘yi tekrar derleyebilir ya da yeni bir sürümünü
kurabilirsiniz.

    Mod_rewrite destek kontrolünü de geçtikten sonra sıra geldi .htaccess dosyasına..

    İlk verdiğimiz örnekten gidelim;

    http://www.hede.com/?id=5&pid=18

    adresten sonra iki tane parametre alınıyor bunları $1 ve $2 olarak düşünelim;
   

    id=$1 ve pid=$2

   
buraya kadar herşey güzel fakat aynı sayfa (index.php muhtemelen)
ikinci örnekte de iki parametre alıyor, bu durumda bi ayrıma gideriz;

   
id ve pid verilirse “page” takma adı üzerinden, id ve cid verilirse
“customer” takma adı üzerinde işlem görsün gibi.. bu durumda;
  

    http://www.hede.com/?id=5&pid=18 için http://www.hede.com/page/5/18    http://www.hede.com/?id=5&cid=18 için http://www.hede.com/customer/5/18 

   
    şimdi .htaccess ı yazalım;
   

    RewriteEngine On     #Rewrite Motorunu çalıştırıyoruz

    RewriteBase /    #Kök dizini / olarak tanımlıyoruz     

    RewriteRule ^page/(.*)/(.*) /index.php?id=$1&pid=$2    #page için kuralımızı yazdık

    RewriteRule ^customer/(.*)/(.*) /index.php?id=$1&cid=$2    #customer için kuralımızı yazdık

    Hepsi bu :) Dosyayı index.php nin bulunduğu dizine “.htaccess” olarak (nokta da dahil) kaydedin ;)

Tags: ,

Leave a Reply