İyi günler arkadaşlar php veya başka programlama dillerine yeni başlayan arkadaşlar üzerlerindeki acemilikleri attıktan sonra artık web sitemi nasıl optime edebilirim veya arama motorlarında üst sıralara çıkabilirim gibi konulara bakınmaya başlarlar. Burada artık web dünyasında bir sektör haline gelen seo kavramının en önemli yanı olan seo linkerinden bahsedeceğim.

Normal bir php dosyasında istediğimiz içeriği bildiğiniz gibi id  ile alıp veritabanından bu id ye göre içerik çekeriz

$id = $_GET["id"];
$sorgu = mysql_query("SELECT * FROM veriler Where id='$id'");

Bu yapımızda verdiğimiz linklerde eğer bir seo calısması yapılmamışsa icerik.php?id=20 gibi bir url ile çalışacaktır.Fakat biz verilerimizi daha anlasılır bir url ile çekmek istiyoruz.

Örnek vermek gerekirse siteurl.com/yeni-web-sayfamiz-yayinda

Yapmamız Gerekenler

  • Yazılarımızın başlıklarını özel karakterlerden arındırarak url formatına uygun bir hale getirmek
  • .htaccess dosyamızda gerekli yönlendirmeleri yapmak
  • Yeni linklerimizi yeni seo yapımıza göre vermek

Öncelikle ilk adımımızı yani seo url ye dönüştürülecek fonksiyonumuzu yazıyoruz.Bunu sayfamızda çoğu yerde kullanacağımız için sitenizin heryerine çağrılan bir php dosyasına yazarsanız  istediğiniz zaman kullanabilirsiniz. Örn (config.php veya header.php)

Gerekli Seo Fonksiyonumuz

Bu fonksiyon için ayrı bir makale bulunmakta, görmek için tıklayın.

Htaccess Yönlendirmesi

.htacces dosyamızı açıyoruz yok ise yeni bir .htacces olusturuyoruz php dosyalarımızın olduğu dizine
Dosyamızın içine girdikten sonra

# Yönlendirmeleri aktif eder
RewriteEngine on

# Yeni bir yönlendirme kuralı ekliyoruz
RewriteRule ^([0-9a-zA-Z-_]+)/([0-9]+)$  posts.php?sef=$1&id=$2 [L,QSA]
Açıklamalar

posts.php = içerikleri id ye göre aldığımız php dosyamız
sef = seo link yapımızın geldiği ara değişken
id = posts.php de veri çektiğimiz id parametresi

([0-9a-zA-Z-_]+) = seo linkimiz bu kısma yerleşecek a-z arası 0-9 arası ve – karakterleri (sef)
([0-9]+) = post.php de kullandığımız id değeri buraya gelicek.

[L] = url uyuştuğu an keser bunun anlamı şu örneğin siteurl.com/merhaba burada merhaba bizim url miz fakat [L] koymaz isek merhabaads gibi bir url yide aynı sayfaya yönlendirecek bazen hatalar olabilir o yüzden [L ] koyuoruz uyuştuğu an kesiyor devam ettirmiyor.

[QSA] = Bu GET ile gösterilen verilerin aktif olmasını sağlar yani örnekte sef=$1&id=$2
Bazı configlerde koymaya gerek yokken bazı web server configlerinde koymayı gerektir biz öncelik olarak ekleyelim.

Linklerimizi Yeniden Oluşturalım

Örnek olarak anasayfaya bir duyuru listesi çekeceksiniz mysql_query ve fetch kullanarak bir diziye aktardınız
Dizi adımız $veri olsun

Örnek link yapımız

<a href="<?=seo($veri["yazi_baslik"]).'/'.$veri["yazi_id"]?>"> <?=$veri["yazi_baslik"]?> </a>
// Örnek Çıktısı yazi-basligi/1
// Örnek Çıktısı yazi-basligi/1

Örnek Bir Yazı başlığı ve çevrilmiş url yapısı;
https://www.davutabi.com/dizilab-icin-dinamik-poster-afisi

Diğer Htaccess Ayarları

.html ile biten url ler: rewriterule mizde sol kısımdaki $ dan önce .html koymamız yeterli

Kategoriye göre getirmek : rewriteruleye bir parametre daha vermelisiniz ,

RewriteRule ^([0-9a-zA-Z-_]+)/([0-9a-zA-Z-_]+)/([0-9]+)$  posts.php?kat=$1&sef=$2&id=$3 [L,QSA]

Olası Bozukluk ve Hatalar

En önemli sorunlardan biri sitenizin statik dosyalarının yönlendirmeden etkilenmesi (css,js,img gibi dosyalar)

1.Çözüm :  Sitenizin head tagları arasına base href ekleyin

<base href="siteurl.com/" />

2.Çözüm :  Htaccess yapılandırması Rewrite kuralızdan hemen önce bu kodu ekleyin

RewriteCond %{REQUEST_FILENAME} !-f

3.Çözüm : Htaccess şartlandırması belirli klasörlere dokunulmasın

RewriteCond $1 !^(css|js|images|inc|lang)

Birden fazla rewriteruleniz varsa bazen çakışma yaşanabilir bunun için katmanlı bir yapı kullanabilirsiniz
Örneğin :

sayfalar/iletisim-sayfasi/2
yazilar/gunun-yazisi/2

Son

Web sayfalarımızda seo sadece seo linklerle sağlanamayabilir.Ancak bu en önemli faktörlerden biridir.
Size önerim her içerik için dinamik meta description ve keyword getirmenizdir.Site içi seo’nun en önemli özellikleri bu özelliklerdir.

10 comments
  1. Merhabalar, Elinize sağlık güzel bir yazı olmuş ancak sormak istediğim bir konu var. Örneğin
    “sayfalar/iletisim-sayfasi/2” şeklindeki dizinler seo için uygun mudur? Link sonuna eklediğimiz sayfa id’sini Google bu sayfanın “/2” şeklinde bir alt dizini olduğunu sanarak yorumlamaz mı?

    1. Öncelikle teşekkür ederim.
      Bu konu örnek bir konuydu zaten, bana kalırsa seo linkini veritabanında benzersiz yaparak sadece seoya göre veri getirmek daha mantıklı. Ama illa id de istiyorum derseniz bence url yapısı şu şekilde olabilir.
      site.com/merhabalar-2

  2. Merhaba bn gamze googlede indexim çok iyi bagzı sitelerden referans link alıyorum bu referans linki direk googlede nasıl tanıtabilirim. Örnegin; http://www.seo.com/ref?142 gibi bu linki başlıgı ile googleye göndermek istiyorum. Siteme giriş yapmadan direk ref linkim ile karşı siteye gidecek. Bu indexi nasıl yaparım? Mail den cvp atarmısınız. [email protected]

  3. Merhaba. Ben htaccess ile linklerimi düzenlediğimde bir problemle karşılaşıyorum ve çözümünü bulamadım. RewriteRule ^haberler/([0-9a-zA-Z-_]+)(/?)$ haberler.php?do=$1 [L,NC] şeklinde link düzenlememi yapıyorum, sorunsuz çalışıyor. Fakat o sayfadaki ana menü dahil tüm linklere /haberler/ ekliyor. Örneğin, ‘www’.ppp.com’/’haberler/’seo-hocasi şeklinde sayfam açılıyor. Orada mesela ana menüden videolara bastığımda ‘www’.ppp.’com/’haberler/videolar şeklinde oluşuyor link ve 404 hatasına düşüyor doğal olarak. Bunu nasıl engelleyebilirim, teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir