Şimdi Ara

.htaccess olmadan seo link yapımı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
1
Cevap
0
Favori
1.383
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Ö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:

    <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?hakkimizda" data-href="?hakkimizda">Hakkımızda</a>
    <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?yazi" data-href="?yazi">yazilar</a>
    <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?" data-href="?">anasayfa</a> // 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 '<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?yazi/'.$oku['id'].'/'.$oku['baslik'].'" data-href="?yazi/'.$oku['id'].'/'.$oku['baslik'].'">''</a><br>';
    }
    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 '<font>hop birader mıncıklama idyi..</font>';}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 '<font>bu kategoride bir yazı yok</font>';
    }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 ;

    <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?etiket/linux-mint" data-href="?etiket/linux-mint">Linux Mint</a> // 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 '--><a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=35496962&url=?yazi/'.$etioku['id'].'/'.$etioku['baslik'].'" data-href="?yazi/'.$etioku['id'].'/'.$etioku['baslik'].'">'.$etioku['baslik'].'</a><br />';
    }
    }

    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 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



    < Bu mesaj bu kişi tarafından değiştirildi zumsuk -- 1 Kasım 2009; 18:04:58 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.