İ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
İçerik Haritası
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)
Merhaba bir kac gundur sikinti yasadigim bir konu var yardimci olabilirseniz sevinirim
link rel alternate olayinda sayfada gelmesi gereken linkler ile ilgili, sitem https:www.transfer4cheap.com 3 dil aktif turkce ingilizce ve almanca yani /tr, /en ve /de
Ornegin /en/airport-transfers diye bir sayfamiz var bu sayfa load oldugunda link rel alternate lerde bu sayfanin diger dillerdeki linklerini cekip gostermem gerek tabi bu dinamik sayfalar icinde gecerli, yani
yine ornegin bu sayfanin almanca linki /de/flug-haven-transfers iste ben bu linki link rel alternate kisminda nasil ve hangi kodla getirebilirim ki ingilizce load olmus sayfanin icindede link rel alternate donus linki olarak gorunsun ? Umarim derdimi anlatabilmisimdir, simdiden tesekkur ederim
Merhaba ,hocam URL kısmında id göstermek istemiyorum bunu nasıl yapabilirim. Post olarak iş gonderiyorum ancak veriler gelmiyor