18-10-2020, Saat: 15:04
İ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
Bu yapımızda verdiğimiz linklerde eğer bir seo calısması yapılmamışsa [b]icerik.php?id=20[/b] 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
Gerekli Seo Fonksiyonumuz
Benim kullandığım seo fonksiyonum bu benim işimi çoğu zaman gördü
Bu fonksiyon türkçe karakterleri normal karakterlere , özel karakterleride url formatında çevirmektedir örnek vermek gerekirse
İstediğimiz url yapısını olusturmayı başardık , şimdi sıra geldi yönlendirmeleri yapmaya
Php dosyamızda içeriği yine id ile çağıracağız tek yapmamız gereken htaccesde doğru yönlendirme yapmak
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
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][b] [/b]= 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][b] [/b]= 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
Örnek Bir Yazı başlığı ve çevrilmiş url yapısı :
https://ixbir.net/java-vize-2013-cozumlar/46
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[b] :[/b] rewriteruleye bir parametre daha vermelisiniz ,
Farklı tablolardan farklı veriler için, Örneğin
haberler tablosundan , haberler/haber1/1
fotogaleri tablosundan , fotogaleri/fotohaber1/1
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
2.Çözüm : Htaccess yapılandırması Rewrite kuralızdan hemen önce bu kodu ekleyin
3.Çözüm : Htaccess şartlandırması belirli klasörlere dokunulmasın
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.
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
PHP Kod:
$id = $_GET["id"];
$sorgu = mysql_query("SELECT * FROM veriler Where id='$id'");
Ö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
Gerekli Seo Fonksiyonumuz
Benim kullandığım seo fonksiyonum bu benim işimi çoğu zaman gördü
PHP Kod:
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;
}
Bu fonksiyon türkçe karakterleri normal karakterlere , özel karakterleride url formatında çevirmektedir örnek vermek gerekirse
PHP Kod:
$baslik = "İsteğe Bağlı Asil Listede Yer Alan Öğrencilerimiz için Dilekçe Duyurusu";
echo seo($baslik);
// Çıktı : istege-bagli-asil-listede-yer-alan-ogrencilerimiz-icin-dilekce-duyurusu
İstediğimiz url yapısını olusturmayı başardık , şimdi sıra geldi yönlendirmeleri yapmaya
Php dosyamızda içeriği yine id ile çağıracağız tek yapmamız gereken htaccesde doğru yönlendirme yapmak
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
PHP Kod:
# 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]
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][b] [/b]= 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][b] [/b]= 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
PHP Kod:
<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://ixbir.net/java-vize-2013-cozumlar/46
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[b] :[/b] rewriteruleye bir parametre daha vermelisiniz ,
PHP Kod:
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
PHP Kod:
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]
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
PHP Kod:
<base href="siteurl.com/" />
PHP Kod:
RewriteCond %{REQUEST_FILENAME} !-f
PHP Kod:
RewriteCond $1 !^(css|js|images|inc|lang)
Ö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.