image

PHP .Htaccess İle Seo Dostu Url Yapımı

İnternette SEO dostu url ile ilgi bir sürü kaynak var fakat açıklamaları yeterli düzeyde olmadığı için kodlar çalışmamakta.Öncelikle SEO dostu url demek, web sayfası için tanımlayıcı bilgiler içeren url lerdir. Örneğin: site.com/sayfadetay.php?id=5 yerine site.com/sayfadetay/5/seo-dostu-url-yapimi.html gibi bilgiler içeren url lerdir.

ÖNEMLİ: Eğer bu konuda bilgili değilseniz .htaccess dosyanızın bir yedeğini mutlaka alınız.Yoksa web siteniz çalışmaz.

 PHP sayfalarımızı site.com/sayfadetay.php?id=5 şeklinde $_GET[id] methodu ile çalışaçakmışız gibi kodlayacağız. SEO dostu url mizin okunmasını .htaccess ile sağlayacağız.

 SEO dostu url yaparken dikkat edilmesi gerekenler.

  • .htaccess dosyası ile php dosyalarımız aynı klasör içinde olması gerekmekte
  • web sayfasına eklediğiniz resim ve CSS dosyalarının çalışması için oluşturduğumuz PHP sayfalarının tamamına taginden önce PHP tagleri arasında $base tanımlaması yapılması gerekmekte?1$base = http//:www.site.com/PHPdosyalari; echo $base;bu kodu eklemezseniz resimleriniz web sayfasında görüntülenmez
  • 404 The page cannot be found gibi hata saylalarıda yapmak isterseniz hata sayfalarınızında aynı dizin içinde bulunması gerekmekte
  • dikkat etmemiz gerken diğer bir konu ise türkçe karakter problemi url mizi Türkçe karakterlerden temizlememiz gerekmektedir, uygun bir kod yapısı oluşturusak Tükçe karakter içeren bir seo dostu url de PHP ye oluşturtabiliriz. url lerdeki Türkçe karakterleri temizleyeceğimiz kod aşağıda

   Örnek bir .htaccess dosyası verecek olursak?

Yazdığımız kodları açıklarsak:

RewriteEngine On: Bu komut ile url yönlendirmesini aktif hale getiriyoruz.
RewriteBase :  Bu komut ile yönlendirmemizin etkili olacağı klasörü belirliyoruz.
Örneğin sitemiz www.site.com/PHPdosyalari şeklinde bir dizinde ise kod yapımız RewriteBase /PHPdosyalari şeklinde olacaktır.
RewriteRule :  Bu komut yönlendirmeyi gerçekleştirecek komutumuzdur. Hangi adresin hangi adrese yönleneceğini bu komut ile belirlenir.
# : Yorum satırı.

.htacces dosyamızı düzenleken kullanacağımız düzeli ifadelerimizden de bahsedelim:

  • (^) oluşturduğumuz SEO dostu url  başlangıç noktasını belirtir
  • ($) oluşturduğumuz SEO dostu url  bitiş noktasını belirtir
  • ([a-zA-Z0-9]+) iki / işareti arasında sadece ingilizce olarak rakam ve string karakterlerin geleceğini belirtiyor
  • ([0-9]+) iki / işareti arasına bir veya birden fazla rakamların gelebileceğini belirtiyor

Parantez içlerinde kullanılan NC, L ve R harflerinin anlamları:

  • L: Last
    Bu tanımlanmadan önce ifade edilen kurallar bundan sonrakilere geçmemesini ve karışmamasını sağlar.
  • R: Redirect
    Bu değer kullanılırsa browserda adres değişir, kullanılmazsa yönlendirme arkaplanda yapılır fakat kullanıcının girdiği URL aynı kalır.
  • NC: No Case
    Büyük küçük harfe duyarsız davranır.
  • QSA: Query String Append
    GET metodu ile yönlendirme yaptığımızda yönlendirilen yere sonuna eklenen  GET parametrelerini de dahil eder.

   Diğer tüm ifadeler için buraya bakabilirsiniz.

 # sayfa için linklink 1 # urun için linklink 2 # kategori için linklink 3

burada dikkat etmemiz gereken nokta sayfa, urun, kategori adıyla klasör oluşturmadık burada yaptığımız htaccess dosyamızdabirden fazla url olacağı için bu url leri ayırma işlemi yaptık ^ işareti ile bu ayırımı sağladık. 

url lerdeki türkçe karakterleri temizleme için yazdığımız fonksiyonumuz.

function SEO($s) {$tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',':',',');$eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','');$s = str_replace($tr,$eng,$s);$s = strtolower($s);$s = preg_replace('/&.+?;/', '', $s);$s = preg_replace('/s+/', '-', $s);$s = preg_replace('|-+|', '-', $s);$s = preg_replace('/#/', '', $s);$s = str_replace('.', '', $s);$s = trim($s, '-');return $s;}

.htaccess ile daha başka neler yapabiliriz.