• 16-05-2009, 11:36:50
    #1
    Merhabalar ArkadaÅŸlar,
    Php'ye yeni giren arkadaşlarımızın ortak hayali olan konuizle.php?id=1500 benzeri linklerimizi konu-adi.html şekline nasıl çevireceğimizi göreceğiz.
    Sef link mantığı asp'de de aynıdır ama ben asp'de yetkin olmadığım için yanlış yönlendirme yapmak istemiyorum, bu yüzden php bölümünde paylaşıyorum konuyu.
    Linklerim Nasıl Olacak ?
    fikraoku.php?id=13 > 13-ya-tutarsa-fikrasi.html
    veya
    fikra/13/ya-tutarsa.html
    veya biraz daha emek harcayarak direktman
    ya-tutarsa.html
    3. sistemin biraz daha emek istemesinin sebebi, fıkrayı çekerken birincil değer olarak url'de fıkra numarası yerine başlığının türkçe karakter içermeyen halini kullanmamız gerekiyor. Bu sef link sistemine yeni başlayacak arkadaşlar için kafa karıştırıcı olacağından bu yapıyı nasıl yapabileceğimize şimdilik değinmiyorum.
    DeÄŸin diyen olursa memnuniyetle deÄŸinirim )
    Linklerim Böyle Olursa Ne Kazanacağım?
    Google amcamız ezelden beri .html uzantılı siteleri daha çok sever.
    Hele bir de aratılan terimler url'de bizzat bulunuyorsa, tadından yemez kullanıcısına yedirir.
    Linkleriniz fikraizle.php=13 ÅŸeklinde iken google sizi 5 birim seviyorsa
    13-ya-tutarsa-fikrasi.html ÅŸeklinde iken 15 birim sever.
    Birisi google'a gidip "ya tutarsa" diye aratınca 2. durumda 1. duruma göre çok daha yüksek çıkarsınız.

    Bu konu size google'da şartsız şampiyonluk getirecek demiyorum, SEO başlı başına bir sektördür. SEF link seo'nun önemli bir ögesidir fakat yarısını bile ifade etmez. Burada sitemize SEO yapmıyoruz, sadece SEO'suna katkıda bulunuyoruz.

    Bir diğer faydası;
    Diğerleri kadar önemli olmasa da, kullanıcılarınız sitenizdeki linklerin içeriğini url'nize bakarak anlayabilir ve bu da kullanım kolaylığı sağlar.
    Başlıyoruz...
    Sef Linklerin Babası .htaccess
    Web sitemizin ana dizininde bulunan .htaccess isimli dosyamızı Sef link yaparken çok kullanacağız.
    htaccess'in farklı görevleri vardır ama biz ondan şunu yapmasını isteyeceğiz :
    "Bir kullanıcı tarayıcıya benimsitem.com/X yazdığı zaman, benimsitem/Y yazmış gibi davran."
    Daha gerçekçi anlatmak gerekirse :
    "Bir kullanıcı tarayıcıya benimsitem.com/13-ya-tutarsa-fikrasi.html yazdığı zaman benimsitem/fikraizle.php?id=13 yazmış gibi davran."
    htaccess, tarayıcı ile sitemiz arasındaki tercüman görevini üstleniyor bu kısımda.
    Tarayıcı elinde bir url ile geliyor, htaccess dosyası ona elindeki url'nin gitmesi gereken gerçek adresi işaret ediyor.
    Böylece tarayıcı, sizin hostunuzda 13-ya-tutarsa-fikrasi.html gibi bir html dosyası olmasa bile, .htaccess'in yol göstericiliği doğrultusunda fikraizle.php?id=13'e gidiyor.
    Peki htaccess'le nasıl konuşurum ?
    Tatlı dil yılanı deliğinden çıkarır deyip, başlıyoruz.
    İster web sitenizin anadizinindeki .htaccess dosyasını bilgisayarınıza indirip bir editörle açın, ister ftp programından sağ tıklayıp "edit" deyin, .htaccess dosyası yok ise bilgisayarınıza htaccess.txt oluşturup onu .htaccess diye kaydedin, bir şekilde o dosyanın düzenleme ekranını açın
    Dosyamızı açtık ve bize host sağlayan firmanın kendi ayarlarını yapmış olabileceğini göz önüne alıp, onlarla papaz olmamak için bir karakteri bile silmedik.
    En alt satırın altına şu iki satırı yapıştırdık :
    Options +FollowSymLinks
    RewriteEngine on
    Bu Kod Ne Diyor?
    Bu kod .htaccess'e şunu söylüyor :
    Artık bazı şeyleri yeniden yazacaksın, değiştireceksin.
    Kodlama ingilizce konuşur arkadaşlar, ingilizce bilenlerimiz kodlardan amacı çıkarabilirler.
    Rewrite Engine On > Yeniden Yazma Motoru Açık.
    htaccess tercümanlığa terfi etti
    Htaccess'e hangi linki hangi diğer linke tercüme edeceğini nasıl öğretirim ?
    Bilgisayar en iyi dosttur çünkü siz doğru anlattıkça kesinlikle yanlış anlamaz
    Biraz emek ve azimle anlamayacağı şey de yoktur.
    Önce htaccess'in bildiği ama bizim bilmediğimiz özel karakteri bir tanıyalım.
    Bizim alfabemizde "Buraya gelecek terim, görevi kendine göre değiştirir" görevini yüklenen bir harfimiz yoktur.
    Ama htaccess'de vardır, kültürlü maşallah. O karakter grubu da şudur :
    (.*)
    Htaccess dosyasında bu karakter grubunu koyduğunuz yere gelecek olan içeriği, eğer isterseniz bir değişken olarak tanımlarsınız, istemezseniz havada kalır, yerine ne gelirse gelsin birşey değişmez
    Biz iki durumu da kullanacağız.
    Özel karakterimizi tanıdıktan sonra htaccess'e çevireceği linkleri öğretmeye başlıyoruz :
    Az önce bahsettiğim iki satırlık kodu .htaccess dosyasının en altına ekledikten sonra, şimdi çalışacaklarımızı o iki satırın altına yazacağız.
    Htaccess'in çeviri mantığını cep telefonuyla yapılan başvurulara benzetebilirsiniz.
    Örneğin;
    TERCÜME yaz bir boşluk bırak ÇEVİRİLECEK METNİ yaz bir boşluk bırak ÇEVİRİLECEĞİ METİNİ yaz htaccess'e gönder Sef link cebine gelsin.
    Başlıyoruz ;
    TERCÜME yaz Bir boşluk bırak dedik ama, kodlama ingilizce konuşur. Bunu anlamaz.
    Htaccess dosyamızın en alt satırına inip bir nevi TERCÜME sözü görevini yapacak şu kelimeyi yazıyoruz :
    RewriteRule
    Rewrite rule : yeniden yazma kuralı. Yani şunu buna çevir cümlesi yazacağımın sinyalini veriyorum.
    Bir boşluk bırakıyorum ( hatırlayın cep telefonuyla başvuru yapar gibi)
    Çevirilecek metni yazıyorum.
    Hop dedik, ben her fıkramı buraya tek tek ekleyemem ki? Uzar gider bu liste?
    O zaman deÄŸiÅŸebilecek terimlerim yerine deÄŸiÅŸken atamaya karar veriyorum.
    Değişkeni ne ile atıyorum ? Sevgili karakter grubum (.*) ile.
    Analize başlıyoruz :
    link :
    benimsitem.com/13-ya-tutarsa-fikrasi.html
    Bu linkte nereler her fıkraya göre değişir herkes kendi düşünsün bakalım? Süre bir dakika.
    Geldiyseniz devam ediyoruz.
    Fıkraya göre linkimde değişecek yerler :
    benimsitem.com/13-ya-tutarsa-fikrasi.html
    Değişecek olan bölgelerime sevgili karakter grubumu koyarak değişken kılınca linkim şu hali alıyor :
    benimsitem.com/(.*)-(.*)-fikrasi.html
    Tamamdır. Şimdi şuna dikkat ediyorum :
    İki tane değişkenim var, hangisi işime yarayacak ?
    Hepimizin şıp diye aklına geldiği üzere, birinci değişkenim olan fıkra numarası işime yarayacak. Çünkü fıkraları id numarasına göre çekiyorum, başlığına göre değil.
    Değişmesini istediğim terimi htaccess dosyama Rewrite Rule'dan sonra bir boşluk bırakıp yazıyorum.
    .Htaccess dosyamın son satırı şöyle oldu:
    RewriteRule (.*)-(.*)-fikrasi.html
    Sitemin ana url'sini (benimsitem.com) yazmadığımı unutmayınız.
    Ana url'yi dahil etmeden, sitenizin adından sonraki kısmı yazacağız her zaman.
    İlk iki adım tamamdır.
    TERCÜME yazdım, Bir boşluk Bırakıp Çevirilecek Metini Yazdım.
    Rewrite Rule Yazdım, Bir boşluk bırakıp (.*)-(.*)-fikrasi.html yazdım.
    Son adım olan, çeviri sonucunu yazmaya geldi sıra. Verilen metini neye çevireceğini öğreteceğiz sevgili .htaccess'e.
    Bir boşluk bırakıp konumuzu okumaya devam ediyoruz.
    Kendimize soralım :
    13-ya-tutarsa-fikrasi.html
    Ben bu linki nereye götürürsem, sitemdeki fıkrayı ziyaretçime okutabilirim?
    Şu nasıl olur ?
    fikraizle.php?id=13
    Kullanıcım bu linke gelince benim fıkramı okuyabiliyordu zaten. Htaccess kullanıcıyı buraya gönderirse ben ona fıkramı yine okutabilirim.
    Peki ÅŸu linkler nereye gitmeli ?
    26-parayi-veren-dudugu-calar-fikrasi.html > fikraizle.php?id=26
    76-daa-da-gelmem-fikrasi.html > fikraizle.php?id=76
    Bu liste uzar gider. 5bin fıkram varsa 5bin çeviri yapmam gerekir.
    Hepsini tek tek yazacak mıyım htaccess'e, tabi ki hayır. Yine sevgili özel karakterimiz olan (.*)'ın bize sağladığı değişken lüksünden faydalanacağız.
    Çevirilecek metinim şuydu :
    (.*)-(.*)-fikrasi.html
    Bunu neye çevirirsem, her zaman ilgili fıkraya ziyaretçi yollayabilirim?
    Şu nasıl?
    fikraizle.php?id=ilkdegisken
    Altını çizdiğim ilk değişken alanı, ilk yazılan (.*) karakteri yerine gelen alanı kastedmektedir.
    O zaman şunu öğrenmemiz gerekiyor :
    Htaccess'te bir satıra (.*) ile atadığım X tane değişkenden n. olanı çekmek için $n yazmam yeterlidir.
    RewriteRule (.*)-(.*)-fikrasi.html satırındaki 2 tane değişkenden birincisini seçmek için şunu yazmam yeterlidir : $1
    Öyle iste ziyaretçinin gönderileceği linkte, altını çizdiğim ilk değişken alanına şunu yazsak nasıl olur?
    fikraizle.php?id=$1
    Bence gayet güzel olur.
    Sizin aklınıza takılmadan ben söyleyeyim :
    evet linkte ya tutarsa yazması veya parayı veren düdüğü çalar yazmasının hiç bir önemi yok. O sadece google'a yaranmak için yapılmış bir işlem. önemli olan linkteki numara.
    Denemek ister misiniz?
    https://www.r10.net/php/368840-phpde-...istelemek.html
    Aşağıdaki linke tıklayıp yeni bir pencerede açın.
    Konuyu gördükten sonra linkteki 368840 sayısı yerine 368813 yazın.
    Enter'a basınca karşınıza yeni konu geldiğini göreceksiniz.
    Yani url'deki metinin hiç bir önemi yok ( önemi olacağı zamana daha çok var )
    Çevirilecek metin olarak şunu buldum :
    fikraizle.php?id=$1
    O zaman bunu da satırımın bir karakter sonrasına ekleyeyim ve satırım şu hale gelsin :
    RewriteRule (.*)-(.*)-fikrasi.html fikraizle.php?id=$1
    Evet cep telefonu mesajım hazır. Htaccess dosyamı kaydederek ftp'ye yüklersem , artık birisi tarayıcıma 13-ya-tutarsa-fikrasi.html yazdığı zaman, farkında olmadan fikraizle.php?id=13'e gidecek.
    Diğer bütün link ayarlamalarını da bu şekilde yapabilirim.
    Örnek bir .htaccess dosyası içeriği görmek isterseniz :
    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*)-(.*)-sarkicisinin-akorlari.html sarkici.php?id=$1
    RewriteRule (.*)-(.*)-haber-kategorisi.html haberkat.php?id=$1
    RewriteRule (.*)-(.*)-haberi.html haberizle.php?id=$1
    RewriteRule (.*)-(.*)-koyu.html koyizle.php?id=$1
    RewriteRule (.*)-(.*)-videosu.html videoizle.php?id=$1
    RewriteRule (.*)-(.*)-firmasi.html firmaizle.php?id=$1
    RewriteRule (.*)-(.*)-fotosu.html fotoizle.php?id=$1
    RewriteRule (.*)-(.*)-uyesi.html uyeizle.php?id=$1
    RewriteRule (.*)-(.*)-ilcesi.html ilceizle.php?id=$1
    RewriteRule (.*)-(.*)-haber-kategorisi-sayfa-(.*).html haberkat.php?id=$1&sayfa=$3
    RewriteRule (.*)-(.*)-fotograf-kategorisi.html fotokat.php?id=$1
    RewriteRule (.*)-(.*)-fotograf-kategorisi-sayfa-(.*).html fotokat.php?id=$1&sayfa=$3
    RewriteRule (.*)-(.*)-firma-kategorisi.html firmakat.php?id=$1
    RewriteRule (.*)-(.*)-firma-kategorisi-sayfa-(.*).html firmakat.php?id=$1&sayfa=$3
    RewriteRule (.*)-(.*)-video-kategorisi.html videokat.php?id=$1
    RewriteRule (.*)-(.*)-video-kategorisi-sayfa-(.*).html videokat.php?id=$1&sayfa=$3
    RewriteRule (.*)-(.*)-akorlari-gitar-akorlari.html akorizle.php?id=$1
    Ne kadar linki düzenlemek istiyorsak, o kadar cep mesajı atacakmışız gibi düşünün. Cep mesajlarını htaccess'e yazıyoruz tabi Kontör yemez
    Gerekli htaccess düzenlemesini yaptım, sitemde görünen linkleri nasıl değiştireceğim?
    Kodlayacağınız sistemi bu link yapısına göre kodlayacaksınız tabii ki
    Ben üzerinde çalıştığım dil olan php ile size bu işi nasıl yaptığımı kısaca aktarayım :
    Aynı mantıkla diğer kodlama dillerinde de yapabilirsiniz.
    Önce bilmem gereken :
    Tarayıcıya ğ,ö,ş,ç gibi türkçe karakterler çıkmayacağı için, onların ingilizce karakterle yazılmış hali lazım bana.
    Bu angaryayı da sevgili php'ye yıkıp hakkını helal etmesini istiyoruz.
    Gereken fonksiyon :
    Türkçe karakterleri ingilizceye çevirmeye yarayan, boşluk yerine tire koyan tr_duzelt fonksiyonu, buyurun :
    function tr_duzelt($tr1) {
    $turkce=array("ş","Ş","ı","(",")","'","ü","Ü","ö","Ö","ç","Ç"," ","/","*","?","ş","Ş","ı","ğ","Ğ","İ","ö","Ö","Ç","ç","ü","Ü");
    $duzgun=array("s","S","i","","","","u","U","o","O","c","C","-","-","-","","s","S","i","g","G","I","o","O","C","c","u","U");
    $tr1=str_replace($turkce,$duzgun,$tr1);
    $tr1 = preg_replace("@[^A-Za-z0-9\-_]+@i","",$tr1);
    return $tr1;
    }
    Bu fonksiyonu sayfamın müsait biyerine sıkıştırdıktan sonra devam ediyorum.
    Fıkraları veritabanımdan çekeceğim :
    (okuyan herkesin bir miktar php bilgisi sahibi olduğunu varsayarak kullandığım satırlardan konumuzla ilgili olmayanları açıklamayacağım. Php üzerinde çalışıyor ve cümleciklerin anlamını bulmakta zorlanıyorsanız tekrar yapmanızı, asp'de çalışıp anlamakta zorlanıyorsanız bir bilene danışmanızı rica ediyorum )
    $fikraal=mysql_query("SELECT * FROM fikra");
    while($fikra=mysql_fetch_array($fikraal)){
    $fikraid=$fikra['id'];
    $fikraad=$fikra['baslik'];
    $fikraadingilizce=tr_duzelt($fikraad); // Fıkramın başlığını ingilizce karakterlere çevirip bir değişkene atadım
    print"<a href=$fikraid-$fikraadingilizce-fikrasi.html>$fikraad</a>";
    }
    tr_duzelt fonksiyonu ile nasıl düzenli link kurduğumu da yukarıdaki kodlardan öğrenmiş olduk.
    Böylece sistem ekranınıza şu kodları bastırdı :
    <a href=26-parayi-veren-dudugu-calar-fikrasi.html>Parayı veren düdüğü çalar</a>
    <a href=13-ya-tutarsa-fikrasi.html>Ya Tutarsa?</a>
    <a href=76-daa-da-gelmem-fikrasi.html>Daa Da Gelmem</a>
    <a href=88-gsouc-fikrasi.html>ğşöüç</a>
    Scriptinizi bu mantıkla kodlar ve htaccess dosyanıza tercümanlık öğretmeyi başarırsanız, buyurun sizin de artık full sef link bir sisteminiz var.
    Herkese iyi çalışmalar..
  • 16-05-2009, 11:40:25
    #2
    Tşkler güzel bir yazı olmuş. +rep
  • 16-05-2009, 11:52:07
    #3
    htaccess ile boğuşmayıp wordpressteki gibi bir link sınıfı oluşturarak ona göre işlem yapmak daha kolay oluyormuş son zamanlarda bunu gördüm
    alternatif bir yöntem. bu da denenebilir ...
  • 16-05-2009, 20:13:05
    #4
    Htaccess ile boğuşmak derken yapacağımız iş gözlerde büyüsün istemem

    Herkes aklında soru işareti kalmayıncaya kadar anlasın istediğim için anlatım biraz uzadı.

    Yoksa bu anlatımı 10 satırda paylaşıp "şu satırı kendinize göre düzenleyerek eklersiniz" benzeri bir cümle ile halledebilirdim, o zaman daha basit görünürdü elbet.

    Her düzenleme için tek bir satır ekleme yaptığımız gayet basit bir işlem.

    Bunu siz ve ben biliyoruzdur elbet, ama yine de "htaccessle boğuşmak" söz grubu amatörlerin içini karartmasın istedim
  • 16-05-2009, 22:28:27
    #5
    Üyeliği durduruldu
    uysal_rockci adlı üyeden alıntı: mesajı görüntüle
    htaccess ile boğuşmayıp wordpressteki gibi bir link sınıfı oluşturarak ona göre işlem yapmak daha kolay oluyormuş son zamanlarda bunu gördüm
    alternatif bir yöntem. bu da denenebilir ...
    sadece performans açısından bir eksi olabilir bu mantık. wordpresslerin işlemci sömürmesinde bir etken all in one seo

    paylaşım için teşekkürler, emeğinize sağlık
  • 17-05-2009, 01:58:36
    #6
    SpngBB adlı üyeden alıntı: mesajı görüntüle
    Herkes aklında soru işareti kalmayıncaya kadar anlasın istediğim için anlatım biraz uzadı.


    Her düzenleme için tek bir satır ekleme yaptığımız gayet basit bir işlem.

    Bunu siz ve ben biliyoruzdur elbet, ama yine de "htaccessle boğuşmak" söz grubu amatörlerin içini karartmasın istedim
    Evet yeni başlayanlar korkmasın kesinlikle hepimiz bu yollardan geçtik.
    Ama yanlış anlaşılma olmasın anlatım güzel elinize sağlık

    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    sadece performans açısından bir eksi olabilir bu mantık. wordpresslerin işlemci sömürmesinde bir etken all in one seo

    paylaşım için teşekkürler, emeğinize sağlık
    evet çok olmasa da performanstan az bir kayıp verdiği doğrudur .htacesse göre , ama daha işlevsel bence, bir degişiklik yapılacak oldu mu güncellemesi çok daha kolay ve wordpresste olduğu gibi kalıcı bağlantılarda değişiklik gibi istenilen yapı rahatlıkla oluşturulabiliyor.
  • 17-05-2009, 02:01:22
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    php melody de pek fena sayılmaz eğer biraz incelediyseniz.
  • 17-05-2009, 02:32:28
    #8
    @SpngBB Tebrikler. Şahsen ben bile keyifle okudum. Kaldı ki bu işe yeni başlayan birisi de seve seve okuyup rahatlıkla anlayacaktır diye dusunuyorum.Ellerine saglık güzel anlatım olmus
  • 17-05-2009, 14:12:48
    #9
    Üyeliği durduruldu
    Çok Güzel Tam Anlaşılabilecek Yazı Tebrik Ederim + REP