Anasayfa » Php

Htaccess Url Yönlendirme ve Kullanımı – 2

18 Şubat 2012 18.707 kez okundu 7 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (2 oy,5 üzerinden : 5,00 )
Loading...

Permalink yapımı konulu makalemizin bugün ikinci bölümünü oluşturacağız. Eğer ilk makaleyi okumadıysanız lütfen önce buradan okuyun.

Bugünkü yazımızda çoğunlukla örnekler üzerinde duracağız.Zaman kaybetmeden başlayalım.

İlk makalemde .htaccess dosyası için:

///////////////// .htaccess  /////////////////////////////////
Options
RewriteEngine on
RewriteBase /
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9\_]-)/?$ index.php?p=$1&yazi=$2
//////////////////////////////////////////////////////////////

kodlarını vermiştim. Bugün ise biraz farklı bir kodla devam edeceğim. O kod ise kısaca şöyle:

///////////////// .htaccess  /////////////////////////////////
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)-(.*).html$ index.php?yazi=$1  [L,NC]
//////////////////////////////////////////////////////////////

şimdi yukarıdaki kodu kısaca açıklayalım;
rewrite rule bölümünde görüldüğü gibi urlmiz domainden sonra istediği iki değişkeni alabilir “(.*)-(.*)” ve bunları tırnak ile ayıracağız. Ayırdığımız bu iki değişkeni $1 ve $2 olarak değişkene atanacak. Bizde bunu php kodumuzda kullanacağız. Bu arada url miz gördüğünüz gibi .html ile bitecek yani url lerimiz html sayfasıymış gibi görünecek.

(.*)-(.*) ile tırnakla ayırdığımız iki veriyi $1 ve $2 değişkenlerine attık ve bunları da “index.php?yazi=$1” içinde kullanıyoruz. burada url mizde tırnaktan önceki veriyi alıyoruz ve bunu asıl linkimizdeyazi=$1 şeklinde kullanıyoruz. İkinci değişkene ihtiyacımız yok.Neden mi ? Çünkü url lerimiz şu şekilde olacak;
örneğin: www.kodmerkezi.net/12-Permalink_hakkinda_yazi.html -> burada ‘/’ dan sonra $1=12,$2=Permalink_hakkinda_yazi oluyor ve bizim asıl php url miz ise -> www.kodmerkezi.net/index.php?yazi=12 olacak.
Görüldüğü gibi başlığa ihtiyacımız yok, zaten biz bu yazının id sini aldık ve veritabanından id ile gerekli bilgileri çekeceğiz.
Burada başlık sadece seo amaçlı yani google amcanın bizi daha iyi indexlemesi için yapılmış bir cinlik oluyor.Aslında id dışındakilerin hicbir önemi yok. Biz burada kodmerkezi.net/12-bilmem_ne_bilmem_ne.html de yazsak yine aynı sayfa açılacak.

Eğer yazınında id yerine direk başlığı kullanarak işlem yapacaksanız kodu biraz değiştirip şu hale sokabiliriz:

///////////////// .htaccess  /////////////////////////////////
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*).html$ index.php?yazi=$1  [L,NC]
//////////////////////////////////////////////////////////////

Burada ise id yerine direk başlığı yazacağız. Yani www.kodmerkezi.net/Permalink_hakkinda_yazi.html ve bu arka tarafta şu hali alacak www.kodmerkezi.net/index.php?yazi=Permalink_hakkinda_yazi burada işte başlık önemli ve veritabanından veri çekebilmek için id yerine başlığı kullanmanız gerekecek.

şimdi ise biraz olayı değiştirelim. Örneğin yazı için iki sayfamız olsun, mesela bir makalelerin olduğu birde blog unuzun olduğu sayfa olsun.şimdi yukarıda ki gibi yaparsak url miz hangisini gösteriyor bilemeyiz ancak onu da şu şekilde aşabiliriz.:

///////////////// .htaccess  /////////////////////////////////
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(blog)/(.*).html$ blog.php?yazi=$2  [L,NC]
RewriteRule ^(.*).html$ index.php?yazi=$1  [L,NC]
//////////////////////////////////////////////////////////////

Yukarıda iki tane kural oluşturduk. Eğer url miz www.kodmerkezi.net/blog/yazi_basligi.html şeklinde ise birinci kural geçerli olacak,eğer sadece www.kodmerkezi.net/yazi_basligi.html olursa ikinci kural geçerli olacak. Burada dikkat etmemiz gereken nokta ilk kuralda $1 yerine $2 yi kullanacağız çünkü $1=blog oluyor, yani ilk değişkene “blog” kelimesi atanıyor.

Bu şekilde sayfalarımıza yönlendirme yapabiliriz. Peki sayfamıza sadece yazı sayfaları değilde örneğin kategoriler sayfası yapmak istiyoruz ve bunu bir klasörmüş gibi göstermek istiyoruz. O zaman ne yapmamız gerekiyor? Onun için de şöyle bir kural yazabiliriz.

///////////////// .htaccess  /////////////////////////////////
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(kategoriler)/(.*)/ kategori.php?k=$2  [L,NC]
//////////////////////////////////////////////////////////////

şeklindeki kuralımızda ise www.kodmerkezi.net/kategoriler/internet/ şeklindeki url yi arka taraftawww.kodmerkezi.net/kategori.php?k=internet haline dönüştürecek ve bizim url miz klasörmüş gibi görünecek.

Bu makalemde bu kadar örnek yeterli sanırım. Daha ayrıntılı örnekleri bir sonraki makalemde bulabilirsiniz.

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

7 yorum »

  • emre dedi ki:

    Teşekkürler çok güzel bir anlatım yapmışsınız.

  • Kadir dedi ki:

    Merhabalar böyle güzel bir anlatım için ben gibi yani başlayanlar ne kadar çok teşekkür etse azdır herhalde .

    Çözemediğim birşey we sormak istediğim bir soru var yardımcı olursanız çok sevinirim.

    Şu an localhost üzerinde çalışmamı sürdürüyorum ve htacces olayına girdim.
    Link Veriyorum ve onunda :
    Bilgilendirme/3/Torrent-Nedir.html şeklinde gözükmesini istiyorum burada index.php sayfasından ayrinti.php sayfanına yolluyorum bunu
    ama ne yaptıysam her seferinde sayfa bulunamadı diyor yda hata veriyor.
    ben burada ayrinti.php sayfanıa yukarıda yazdığım gibi(Bilgilendirme/..) ilk değişken olarak kategoriyi 2nci değişken olarak id yi 3. değişken olarakta başlığı göndermek istiyorum aslında id olmasada olur fakat kategori mutlaka gitmeli burada ki kategori de değişken olsun diyorum yani bi bakmışım Bilgilendirme olmuş bi bakmışım Mesajlar olmuş bunu nasıl yapabilirim acaba yardımcı olabilir misiniz ?

  • admin dedi ki:

    Merhaba Kadir,

    Şöyle birşey deneyebilirsin,

    ////////
    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^(.*)/(.*)/(.*)/$ ayrinti.php?kategori=$1&id=$2&baslik=$3 [L,NC]
    ///////////

    Burada ilk yıldıza gelen değer $1 ile, ikinci yıldıza gelen $2 ile vs alınmaktadır.
    Örnek olarak
    http://www.domain.com/bilgilendirme/3/Torrent-nedir/
    adresi çalıştırılır ise
    http://www.domain.com/ayrinti.php?kategori=bilgilendirme$id=3$baslik=Torrent-nedir
    şeklinde çalışır.

    Bu şekilde bir dene bakalım.

  • Kadir dedi ki:

    İlginiz için teşekkür ederim

    vermiş olduğunuz kod çalışıyor fakat adres çubuğunda
    diye link wersem:

    http://localhost/ea3/localhost/ayrinti.php?kategori=Bilgilendirme&id=3&Adres=Torrent-Nedir
    şeklinde yazı çıkıyor ve sayfa görüntülenmiyor

    localhost wermeden link yazsam:
    link bu

    http://localhost/ea3/ayrinti.php?kategori=Bilgilendirme&id=3&Adres=Torrent-Nedir

    şeklinde adres çubuğunda gözüküyor sanırım ben biraz eksik ve yanlış anlatmışım
    nasıl link wereceğimide bilmiyorum

    istediğim şey şu ki
    adres çubuğunda /bilgilendirme/3/Torrent-nedir.html şeklinde gözüksün

    adres çubuğunda ayrinti.php?kategori=bil&id3…. şeklinde gözüksün istemiyorum

    ayrinti.php dosyamda ben get metodu ile kateoriyi ve de id i alıp ilgili bilgileri çekmek istiyorum(bu biraz sol elimle sağ kulağımı tersten tutmaya benziyo)
    böyle birşey mümkün müdür acaba bu olmazsa bile yine başlık cubuğunda sadece
    bilgilendirme/Torrent-Nedir.html şeklinde nasıl gösterebilirim
    özellikle php kısmında linki açık açık yazarsanız çok iyi olur zannedersem hatalar hep yanlış link wermeden kaynaklanıyor.

    KodMerkezi ‘ne Şimdiden Teşekkürler

  • admin dedi ki:

    Ayrıntılı örneğe buradan ulaşabilirsiniz.

  • KodMerkezi.Net » Htaccess Url Yönlendirme ve Kullanımı (Permalink) – Örnek Uygulama dedi ki:

    […] Htaccess Url Yönlendirme ve Kullanımı – 2 […]

  • Çekmköy evden eve nakliyat dedi ki:

    Güzel paylaşım olmuş

    Teşekürler..

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.