

Hadi Seo Yapalım ( .Htaccess Olmadan Php İle )
-
Öncelikle arkadaşlar explode, switch vs.. gibi kavramların ne olduğuna bakalım ; www.php.net
.htaccess ile yapılabiliyor.Fakat ben beceremedim.Bu yüzden kendi yöntemimle yaptım.Deneye deney bu şekilde birşey oluşturdum.İsterseniz .htaccess deneyebilirsiniz.
------
Seo nedir ? site.com/yazi/bişeyler vs.. dir.Bu google da avantajdır.Aslında seo (benim yaptığım yöntemle) sadece "aldatma sanatı"..(ne demek istediğimi ileride anlatacağım).Yalnız bizim seolar biraz farklı.Nasıl farklı ? site.com/yazi yerine site.com/?yazi olacak.Yani biz index.php de çalıştırıyor olacağız.Şimdi ufak ufak başlayalım ;
$sor = explode('?', $_SERVER['REQUEST_URI']);
$seo = explode('/',$sor[1]);bunu ekledik.bu ne yaptı ??? $_SERVER['REQUEST_URI'] ile urlyi olduğu gibi çektik.Daha sonra ? işaretine göre böldük.
http://www.site.com/?yazi/35/linuxa girişOlduğunu var sayalım.Burda $sor iki değere atandı ( array ile) => $sor = explode('?', $_SERVER['REQUEST_URI']);
$sor[0] = 'http://www.site.com/';
$sor[1] = 'yazi/35/linuxa giriş';Şimdi birşeyler elde etmeye başladık.Buradan sonra $sor[1] kısmınıda / işaretine göre bölelim; => $seo = explode('/',$sor[1]);
$seo[0] = 'yazi';
$seo[1] = '35';
$seo[2] = 'linuxa giriş';//bu linuxa giriş sadece google vs.. içindi.Bununla bi işimiz olmayacak.Şimdi gelelim sayfalandırmaya.Ben herşeyi index.php sayfasında hallettim extradan bir sayfaya gerek duymadım.Şimdi site.com/?yazi kısmında yazi, /dokuman, /hakkimda vs.. olabilir.Bu tamamen linklendirirken sizin seçeneğinize kalmış.Fakat yukarıdaki mantığa göre seo[0] bizim temel kısmımız olacak.Şimdi sizlere yazi, hakkımızda ve anasayfadan oluşan bir örnek yapalım.Bunları switch ile bağlayacağız.
switch($seo[0]){
case 'hakkimizda':
echo 'hakkimizda verecek.';
break;
case 'yazi':
echo 'Burada ileride anlatacağım yazı kımını halledebiliriz.';
break;
default:
echo 'burada ana gösterim olur ?yazi ve ?hakkimiz haric hepsi buraya yonlenir';
break;
}-----
Şimdi bunlara link verelim:
Hakkımızda
yazilar
anasayfa // göreceğiniz gibi burda ?asdfyazsakta anasayfaya atar.Amacımız ilk girişte bunu göstermek zaten.Gördüğünüz gibi buraya kadar birşey yok.Peki ya linkleri çekmede ???Birde uyarı yapayım ben seo yu linke göre aldım yani ?yazi/35/linux dökümanları dediğimiz zaman önemli kısım yazi ve sonraında gelen sayı.O id yi gösteriyor.Amacımız zaten url ile içeriği bağdaştırmak değil mi ? Onuda yaptık linux dökümanları yazdırarak fakat problem yok.
Şimdi gelelim yazıları listeleme ve göstermeye.Bir blog gibi düşündüm bu yüzden anasayfada ilk 10 yazıyı listelediğimizi düşünüyorum.Onun üstünden örneklendiricem.Fakat siz switch te kategoti falan eklersiniz.Mantık aynı mantık zaten.
-----
Veritabanımızda blog içinde kategori ve yazilar kısmının olduğunu varsayıyorum.Öncelikle bunları listeleyip yazi kımına link verelim ;
$sorgu=mysql_query('SELECT * FROM yazilar order by id desc limit 10') or die('sorguda problem var');
while ($oku=mysql_fetch_assoc($sorgu)){
echo '''
';
}Gördüğünüz gibi yukarıda link verirken ?yazi/id/başlık olarak verdik.Başık tamamen google ve arama motorlarına yönelik.Şimdi bunu switch e bağladığımız yazı kısmından çekerlim;
Unutmamamız gereken nokta bizim herşeyimiz $ceo[] daki [] parentezlerinin içinde olan rakamlar ?yazi 0 oluyor, sonra gelen 1, sonra 2, sorna 3..Yani istediğiniz gibi değişiklikler yapabilirsiniz.Evet bu mantıkla id miz $seo[1] olacak.O zaman ;
case 'yazi':
if(!is_numeric($seo[1])){echo 'hop birader mıncıklama idyi..';}else{ // ?yazi/numara yerine başka birşey yazarsa kotnrol yada sql inj
$sorgu=mysql_query('SELECT * FROM yazilar where id='.$seo[1]) or die('sorguda problem var');
if(mysql_num_rows($sorgu)==0){echo 'bu kategoride bir yazı yok';
}else{
$oku=mysql_fetch_assoc($sorgu);
echo $oku['yazi'];
}
}
break;------
Yukarıda echo $oku['yazi'] kısmını divlerle, tablellar ile istediğiniz gibi süsleyebilirsiniz.Şimdi buraya kadar herşey güzel fakat etiketlerken ben bire bir dbden çektirmiştim.Tag kısımlarında yani.Atıyorum linux mint diye bir tagımız var.Şimdi bunu direkt çektirmek istiyoruz.Link verirken şöyle verdik ;
Linux Mint // tabi burada href="?etiket/'.$oku['etiket'].'" demiştim.Neyse; nasıl bir url olur bu ? şöyle => www.site.com/?etiket/linux mint
Fakat burda bir problem var.Çünkü url olunca boşluk %20 gözükür.Diğer karakterler ( Türkçe karakterler )%li gözükür.O yüzden bir php nimeti olan urldecode kullanacağız.Nasıl kullanacağız bunu ?
$eti = urldecode($seo[1]); // gördüğünüz gibi seodan alınan bilgiyi %20 değilde boşluk , diğerleirnide normale çevirir.şimdi napacağız etiketlerde ?
$eticek=mysql_query("SELECT * FROM yazilar where etiket like '%$eti%' order by id desc") or die('etiket sorgusunda problem var');
if(mysql_num_rows($eticek)!=0){ // burada ==0 ise yani kayıt yoksa falan filan gibi değerlendirmeleri es geçiyorum
while ($etioku=mysql_fetch_assoc($eticek)){
echo '-->'.$etioku['baslik'].'
';
}
}Gördüğünüz gibi etiket probleminide ordatan kaldırdık.Ben bu yöntemi kullanıyorum basit geldi, birazcıkta uğraşmayı seviyorum.Hem kendim yazdım :D isteyen olursa ufak bir örnek yapabilirim.Fakat dökümanı açık yazdığımı sanıyorum.
Bu arada sql sorgularında falan problem olur.Yani bi yerde yazilar yazarken diğer yerde dokuman, yazi yazmış olabilirim kontrol ettim ama söyliyeyim.
denemek için (server problemli kasma, yavaşlama falan olabilir) : http:/www.tarcan.tur0.org/blog
.htaccess varken neden buna gerek yok diyeni falan şişlerim :D ben böyle istedim bunu yaptım !
-
-
harika döküman hoca :) TBT ailesinin iyi yararlanması lazım klavyene bilgine sağLık
-
güzel doc.
hocam boşluklarıda -,_ falan yap istersen.
ama çok uğraşmıssın :D
.htac den daha kolay
-
Realist bunu yazdı:
-----------------------------güzel doc.
hocam boşluklarıda -,_ falan yap istersen.
ama çok uğraşmıssın :D
.htac den daha kolay
-----------------------------hocam boşluk falan brişey ifade etmez.Fakat Türkçe karakterleri falan engellemek isteyen olursa ;
function duz($text){
$bul = array('Ç','Ğ','İ','Ö','Ş','Ü','I','U',' ');
$cevir = array('ç','ğ','i','ö','ş','ü','ı','u','-');
$text = str_replace($bul, $cevir, strtolower($text));
return $text;
}------
Bunu nasıl kullanacağız ? Şöyle ;
duz($oku['baslik'])
yaparsanız düzelir.Başka şeyleri çevirmek istiyorsanız bulun sonuna virgül koyup iki tek tırnakarasına ekleyebilirler => ,'A'
daha sonra cevirin sonuna değerin en olacağını girerler => ,'a'burada A a ya dönüşür.Fakat strolower ile zaten bunu yaptık.
------
Öte yandan kendi projelerimle uğraşmayı seviyorum :)
-
zumsuk biraz tasarım çek sitene kabak gibi kalmış :| php yetmemiş yani :|
-
hackworm bunu yazdı:
-----------------------------
zumsuk biraz tasarım çek sitene kabak gibi kalmış :| php yetmemiş yani :|
-----------------------------İyi olur :)
-
hackworm bunu yazdı:
-----------------------------
zumsuk biraz tasarım çek sitene kabak gibi kalmış :| php yetmemiş yani :|
-----------------------------hocam tasarım açısından problem var.Bu günlere getirene kadar canım çıktı ;

önceki hali böyleydi.Şimdi dua etmek lazım...
Tasarım zamanla gelişir.Benim için önemli olan içerik.Yavaş yavaş onu geliştiriyorum.Birazcık daha güzel birşey olsun kodları dağıtıcam zaten sağda solda..Daha güzel olacak.
-
ellerine sağlık hoca ^^
edit: aklıma gelmişken, wikimedia seo mantığı bu değil mi ?
-
hocam onlar access ile.Tek farkı soru işareti yok :D yani görünüşte o ...
Onlarda şöyle çalışıyor ; .htaccess dosyası ile diyorsun ki yazılan urlleri
index.php?sayfa=
olarak al.Yani site.com/hakkinda dediğinde index.php?sayfa=hakkinda oluyor.
-
Programlardan dillerden gram anlamam
ama zumsuk hoca seni içten tebrik ettim ilgisiz olsamda göze çarpıyo bu hevesin uğraşın çaban:)