SEFLINK (permalink) Çalışmaları

Son güncellenen 7 ay önce
KREKLAM
Merhaba arkadaşlar php-fusion üzerinde tecrübelendikçe ve vakit buldukça farklı modifikasyonlar da yapıyorum... Şimdi SEF LINK olayı gördüğüm kadarıyla çok fazla isteniyor. 2018 itibariyle googledan farklı bir SEO yapısı bekleniyor. Belkide SEFLINK olayına daha fazla ağırlık verilecek bilmiyoruz..

Peki şeflink mantık olarak nasıl çalışıyor onu anlatmak istiyorum...
Çekirdek yapısı itibariyle php-fusion içerik çekme işlemlerinde haber ve makalelerde "readmore" değişkenini forumda "forum_id" ve "thread_id" GET değişkenleriyle çalışıyor.

Biz tarayıcıdan GET metoduyla istenilen içeriği numarasına göre istiyoruz. Php gerekli güvenliği sağlıyor, MYSQL id şartına göre içeriği hazırlıyor, php içeriği işliyor ve ekrana yazdırıyor... Google bu işlemi zaten kolaylıkla anlıyor fakat şunun altını özelliklede çiziyor, eğer içerik metni tarayıcıda direk çıkarsa daha rahat anlarım diyor. Olayın özü tamamen bu. Yani biz id değilde tarayıcıda direk içeriğin başlığını görüntüleyeceğiz.

Bunun için başlıkları türkçe karakterlerden, /*\#,. gibi zarar verebilecek karakterlerden arınmamızı sağlayacak bir fonksiyona ve birde htaccess dosyasına ihtiyacımız var.

Öncelikle fonksiyonumuzu basit ve anlaşılır şekilde verelim... Bu fonksiyon maincore.php eklenirse her sayfada rahatlıkla kullanılır.
Kod

function seoyap($s){
   $str = array("ş",   "Ş",   "ı", "I",   "İ",   "ğ",   "Äž",   "ü",   "Ü",   "ö",   "Ö",   "ç",   "Ç",   "(,)",   "/",   ":",   ",",   "?",   " ",   ".");
   $stren = array("s", "s", "i",   "i",   "i",   "g",   "g",   "u",   "u",   "o",   "o",   "c",   "c",   ""   ,   "",    "-",    "-",   "",   "-",   "-");
   $s=str_replace($str, $stren, $s);
   $s=strtolower($s);
   $s=preg_replace("/&.*?;/","",$s);
   $s=trim($s,"-");
   return $s;
}


Şşimdi htaccess dosyamıza da basit bir örnek vereyim..

Kod

RewriteEngine on

RewriteRule ^iletisim$ contact.php [L,NC]

RewriteRule ^haberler$ news.php [L,NC]
RewriteRule ^(.*)-h([0-9]*)$ news.php?readmore=$2&sef=$1 [L,NC]

RewriteRule ^makaleler$ articles.php [L,NC]
RewriteRule ^(.*)-m([0-9]*)$ articles.php?article_id=$2&sef=$1 [L,NC]

RewriteRule ^(.*)-s([0-9])$ viewpage.php?page_id=$2&sef=$1 [L,NC]


basit sayfaları anlatmaya gerek duymuyorum zaten direk sayfayı yeni adına göre değiştiriyoruz. Sayfamız birden fazla parametre aldığında ise;

1. Parametre ( Haber Başlığı )
(.*) -> Tüm karakterleri alanbir ( news_subject)

2. Parametre ( Haber Numarası)
-h([0-9]) --> Haber numarası (readmore)

evet burada tanımladığımız kurala göre haber detayına girerken tarayıcı readmore GET değişkenine haber numarasını veriyor. Haber numarası bizim ikinci parametremiz, Biz bu yapıya ek olarak SEF adında ikinci bir değişkene de haber başlığının türkçe karakterlerden arınmız ve seoya hazır halini gönderiyoruz.

Böylece habere ulaşabilmek için yeni url'niz şöyle olmalı
Kod


echo "<a href='news.php?readmore=".$data["news_id"]."&sef=".seoyap("$data["news_subject"]")."'>".$data["news_title"]."</a>"



işte işlem bundan ibaret... Vaktim az saat baya oldu. Diğer sayfalarıda ayarladıktan sonra uygulanabilir bir modifikasyon ayarlayacağım.
Örneğin readmore kısmında meta ayarlarınında SEF uyumlu olması gereken yerleri var...
ÇIRAK USTAYI SOLLAMAZSA SANAT ÖLÜR
HATALI SOLLARSA ÇIRAK ÖLÜR
http://www.kreklam.com
http://www.elli7.net
KREKLAM
eveet arkadaşlar tek tek deniyorum SEF link bu şekilde sorunsuz çalışıyor. Fakat bu şekilde hep modifikasyon veya sonradan linklerle oynamak yerine bir kereye mahsus bir modül ve çekirdek yapıda bir değişikliğe gitmek gerektiğini düşünüyorum. Henüz hayata geçirmedim ama algoritmik olarak şu şekilde olacak...

sayfalar adında bir tablom olsun istiyorum bu tablodaki alanlarda aşağıdaki gibi olsun

sid, sayfa_sef_url, sayfa_tipi

alanlar daha fazla artırılabilir, hit olabilir, etiket alanı olabilir, veya geliştirmeye dayalı farklı alanlar...

Örneğin bir özel sayfa eklerken form alanında bir input daha olacak... Başlık yaıldığından ve başlık input alanından çıkıldığında bir ajax metodu çalışacak. Ajax php ile sayfalar tablosuna bağlanacak ve sayfa başlığının SEF hali tabloda varmı bakacak varsa sonuna randomize veya sıralı veya özel sayfa son id bir artırarak sayfa adını SEF yapıp SAYFA URL'sini tutan input alanına yazacak.

Böylece kaydedeceğiniz özel sayfanın eskiden viewpage.php?page_id=1 gibi verilen sayfa urlsi başlık olarak size verilecek...

Sayfa Başlığı
Şirketimiz Hakkında

Kalıcı Adres ( Jquery ile Otomatik Oldurulacak )
sirketimiz-hakkinda

Detay :
Şirketimiz XXX yılından bu yana hizmet vermektedir. XXX faaliyetlerde uzman kadro ve eşsiz tecrubemizle....

KAYDET yaptığımızda;
Özel sayfalar kaydedilecek aynı zamanda da sayfalar tablosuna da kaydedilecek. Burada amaç sadece aynı isimde başka sayfa adı olmaması


2. ALTERNATİF.
Her tablonun ( bilgi içeren - haber - özel sayfa - makale - forum - indirmeler vs. ) kendi içindede kalıcı SEF alanı olabilir.

Bu entegrasyon ayarlanabilir şekilde ve MODULLE kontrol edilebilir olmalıdır. Linux Sunucularda sorunsuz çalışacağından eminim ama .htaccess lerin windows sunucularda (hiç kullanmadım test etmedim) sıkıntı çıkarttığını okudum...


Bu konuda kodlama bilen arkadaşar en azından form editleyecek arkadaşlar varsa bir ekip öneriyorum...
ÇIRAK USTAYI SOLLAMAZSA SANAT ÖLÜR
HATALI SOLLARSA ÇIRAK ÖLÜR
http://www.kreklam.com
http://www.elli7.net
Bu yapabilmek forumdaki tüm tartışma konularını görüntüle.
Bu yapamamak forumda yeni bir tartışma konusu başlatın.
Bu yapamamak tartışmas konusuna cevap verin.
Bu yapamamak forumda bir anket başlat.
Bu yapamamak foruma ek dosya yükleyin.
Bu yapabilmek forumdaki ek dosyaları indir.
Tartışmaya katılan kullanıcılar:KREKLAM