Htaccess Url Yönlendirme ve Kullanımı – 2
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.
Bunlara da Göz Atmak İsteyebilirsiniz.
<<< Önceki: Htaccess Url Yönlendirme ve Kullanımı
Sonraki: Basit!! bir C Sorusu >>>
Teşekkürler çok güzel bir anlatım yapmışsınız.
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 ?
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.
İ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
Ayrıntılı örneğe buradan ulaşabilirsiniz.
[…] Htaccess Url Yönlendirme ve Kullanımı – 2 […]
Güzel paylaşım olmuş
Teşekürler..
Yorum Bırakın!
En Son Yazılanlar
Codeigniter Dersleri
Kategoriler
Teknoloji Haberleri
Android Dersleri
Arşiv
Sitemizin QR Kodu
Yeniliklerden İlk Sizin Haberiniz Olsun
KodMerkezi.Net Facebookta
En Çok Okunanlar
En Son Aranan Kelimeler
En Çok Oy Alanlar
Etiket Bulutu
İlginizi Çekecek Siteler
Arşiv
Yönetim
En Son Yapılan Yorumlar
En Çok Okunanlar