Linkedin Instagram Facebook Twitter Mail Youtube Whatsapp

Seo uyumlu url yapısı oluşturma .htaccess

İ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 ıd 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) seflink fonksiyonu 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
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
<a href="<?=seo($veri["yazi_baslik"]).'/'.$veri["yazi_id"]?>"> <?=$veri["yazi_baslik"]?> </a>

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]
Farklı tablolardan farklı veriler için, Örneğin haberler tablosundan , haberler/haber1/1 fotogaleri tablosundan , fotogaleri/fotohaber1/1
RewriteRule ^haberler/([0-9a-zA-Z-_]+)/([0-9]+)$ haber.php?sef=$1&id=$2 [L,QSA]
RewriteRule ^galeriler/([0-9a-zA-Z-_]+)/([0-9]+)$ galeri.php?sef=$1&id=$2 [L,QSA]

Olası Bozukluk ve Hatalar

En önemli sorunlardan biri sitenizin statik dosyalarının yönlendirmeden etkilenmesi (css,js,img gibi dosyalar) 1. Sitenizin head tagları arasına base href ekleyin
<base href="siteurl.com/" />
2.Htaccess yapılandırması Rewrite kuralızdan hemen önce bu kodu ekleyin
RewriteCond %{REQUEST_FILENAME} !-f
3.Htaccess şartlandırması belirli klasörlere dokunulmasın
RewriteCond $1 !^(css|js|images|inc|lang)
 

Bir Yorum Yaz