Anasayfa » Php

Htaccess Url Yönlendirme ve Kullanımı

15 Şubat 2012 7.132 kez okundu 4 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (1 oy,5 üzerinden : 5,00 )
Loading...

http://www.kodmerkezi.net/index.php?p=22&yazi=permalink  şeklindeki linki http://www.kodmerkezi.net/22/Permalink  şeklinde linke çevirme işlemi.

Arkadaşlar biliyoruz ki bir çok dinamik sitelerde de site url leri www.kodmerkezi.net/index.php?p=22 gibi url yerine www.kodmerkezi.net/22 , www.kodmerkezi.net/22.htmlveya www.kodmerkezi.net/22.htm gibi şekillerde görürüz.Hatta kullandığımız bir çok blog sistemlerinde bu yapı hazır olarak bize sunulmaktadır.

Peki biz kendi tasarladığımız sistemlerde bu yapıyı nasıl kullanacağız? Öncelikle bilmemiz gereken bir iki nokta var.Bu işlemler Apache üzerinden sunucularda yer alan .htaccess adlı dosya ile yapılmaktadır. Ayrıca bu yapıyı kullanabilmek için bunların yanında bir de bize bu işi yapan, mod_rewrite isimli komut lazım.

Örnek verecek olursak;
Mesela http://www.kodmerkezi.net/index.php?p=22&yazi=permalink  şeklindeki url yi  http://www.kodmerkezi.net/22/Permalink şeklinde url ye çevirmek istiyoruz.
(Not: oluşturacağımız url içinde kesinlikle boşluk olmaması gerekiyor,boşluk yerine _,-,+ gibi karakterleri kullanabilirsiniz. Ayrıca arama motorlarında daha etkili bir rol almak istiyorsanız tavsiyem _ yerine – kullanın.Çünkü _ iki kelimeyi birleştirir ve tek kelime haline dönüştürür. – ise ayrı iki kelime olduğunu belirtir. )

Şimdi işlemlerimize geçelim; http://www.kodmerkezi.net/index.php?p=22&yazi=permalink  şeklindeki linkimizi http://www.kodmerkezi.net/22/Permalink şeklinde göstermek ve işlemek için sql ile çektiğimiz kayıtlarımızı ufak bir düzenlemeden geçirerek bazı karakterleri ayıklamalıyız. PHP`de hazırladığım ufak bir kod ile türkçe karakterlerde dahil birkaç karakteri temizliyorum.Url ye geçecek başlığı önce bu fonksiyonla temizliyoruz ki yukarıda belirttiğim boşluktan kurtuluyoruz, ayrıca takdir edersiniz ki url de türkçe karakter bulunamaz. Bu fonksiyonumuz türkçe karakterleri de ayıklıyor.

function permalink($cekilensatir)
{
$bulunacak = array(“`”,”,”,”ç”,”ı”,”ş”,”ğ”,”ü”,”ö”,”ğ”,”ş”,”Ç”,”Ö”,”Ü”,” “,”!”);
$degistir = array(“”,””,”c”,”i”,”s”,”g”,”u”,”o”,”G”,”S”,”C”,”O”,”U”,”-“,””);
$onarilmis = str_replace($bulunacak, $degistir, $cekilensatir);
$onarilmis = URLencode(htmlentities($onarilmisr,ENT_QUOTES));
return  $onarilmis;
}
PHP ile linki bu şekilde düzenledikten sonra link içerisinde boşluk içeren kısımları -`a çevirdik. şimdi .htaccess düzenlemesi ile son işlemlerimizi de halledelim.Aşağıdaki kodu .htaccess isimli dosyaya kaydediyoruz ve sitemizin ana dizinine atıyoruz. Böylece bütün dizinleri kapsamış oldu.Dikkat: Eğer zaten bir .htaccess dosyası varsa onu değiştirmek sorun yaratabilir,sonuçta ayar dosyası diyebiliriz,yeterli bilginiz yoksa, bilen birinden yardım alın.Aksi halde oluşacak sorunlardan sorumlu değiliz.

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

Yukarıdaki kodu açıklayalım şimdi de;
RewriteEngine on ile sunucuya anlamlı link tekniğine başladığımızı söylüyoruz.
RewriteRule ile sonrasında belirli karakter kodlamalarını adres ile değiştirip gerekli işlemi başlatmış oluyoruz. Bizim yazdığımız kodda; http://www.kodmerkezi.net/index.php?p=22&yazi=permalink şeklinde görüldüğü gibi iki tane değer bölümümüz bulunuyor. p ve yazi. Bunların aldıkları değerleri / le böleceğimiz için aldıkları değerleri parselemeliyiz. ^([A-Za-z0-9]+) ile id değerimiz yani $1 değişkeninin karakter kodlamasını alıyoruz. id değerimiz sadece sayısal/integer ifade ise 0-9 olması yeterlidir. bu şekilde birinci parseleme işlemini halletmiş oluyoruz. Aynı şekilde ikinci parse alanında da bu işlemi yapıyoruz. Ancak birinciden farklı olarak bu defa – karakterini de işin içine dokmalıyız ki urlmizde boşlukları – olarak işleme koyabilelim.
Sonrasında index.php dosyasından sonraki kodları parselemiş ve bunu da .htaccess`a açıklamış oluyoruz.


URL Rewrite sadece URL yazmak için kullanmaktan ziyade ,spider yönlendirme,emailextractor koruması sub domain yönlendirmesi… gibi bir çok görev için de kullanılmaktadır.

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

4 yorum »

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.