Apache Sunucular'da .htaccess Kullanarak URL Yönlendirmesi
İlk olarak yönlendirme yapabilmek için kullanacağımız .htaccess dosyasından bahsedelim. Bu dosya normalde hostumuz kurulduğunda root (ana klasörde) içi boş bir halde bulunmaktadır. Başında (.) vardır. Dosyanın amacı sadece url yönlendirmesi değil, apache server üzerinde yapmak istediğimiz birçok ayarlamayı son kullanıcılar olarak bu dosya üzerinden yapabilmekteyiz.
Htaccess Dosyasını URL Yönlendirmesi için Yapılandırmak
İlk olarak dosyamızı bir kod editörü veya metin editörü aracılığı ile açıyoruz.
- Dosya içinde kodların başına yazacağımız (#) işareti, o satırı pasifleştirmek için kullanılmaktadır.
- RewriteEngine On: Bu komut ile apache serverımızı url yönlendirmesi için aktif hale getirmiş oluyoruz.
- RewriteBase / : Bu kod ise yönlendirmemizin etkili olacağı klasörü göstermektedir. Örnek verecek olursak web sitemiz root - ana klasörde değilde bir alt sayfada kurulu ise www.siteadi.com değilde www.siteadi.com/blog/ bizim RewriteBase kodumuz "RewriteBase /blog"şeklinde olmalıdır.
Bu iki kodlamadan sonra artık yönlendirme ile ilgili detaylardan bahsedebiliriz.
- RewriteRule : Bu bizim asıl yönlendirme komutumuzdur. Hangi adresin hangi adrese yönleneceğini bu komut ile belirleriz.
Komut örneklerine geçmeden önce bilinmesi gereken bazı bilgiler:
Düzenli İfadeler:
- (.) Herhangi bir karakter olduğunu belirtir.
- (?) 0 veya 1 tane olduğunu belirtir
- (*) 0 ve daha büyük olabilidiğini belirtir
- (^) Seçilecek ifadenin başlangıç noktasını belirtir
- ($) Seçilecek olan ifadenin bitiş noktasını belirtir
- (\) . veya ' gibi kod yapısında etkili olabilecek işaretleri normal karakter şeklinde güzekmesini sağlar.
- NC: No Case - Büyük küçük harf duyarlılığını kaldırır
Şimdi kod örneklerimize gelelim. Örnek olarak www.siteadimiz.com/adresler.html dosyasını url değişmeden arka planda www.siteadimiz.com/adresler.php dosyasına yönlendirmek istersek yazmamız gereken kod.
RewriteRule ^adresler\.html$ adresler.php [NC]
Bu örnekte kullanılan işaretlemeler yukarıda anlatılmıştır. Burdaki yönlendirme ile tarayıcımızda adresler.html olarak gözüken kod aslında biz farkında olmadan adresler.php olarak çalışmaktadır. Bu yönlendirmeyi gözle görülür bir halde yapmak istersek o zaman;
RewriteRule ^adresler\.html$ adresler.php [r=301, NC]
Yönlendirmeyi bu şekilde yaparsak kullanıcı tarayıcısında adresler.html olarak girdiği zaman tarayıcıda url'nin otomatik olarak adresler.php'ye yönlendiğini görürürüz. Burda bize bu gerçek yönlendirmeyi yapmayı sağlayan şey kodun son tarafındaki "r=301" yani 301 yönlendirmesidir.
301 Yönlendirmesinin Avantajları Nelerdir?
- Sitemizde bulunan scriptimizi değiştirdik veya scriptinin konumu değiştirdik diyelim. Sitemizin oyunlar.php kategorisine binlerce hit geliyor olsun. eğer biz bu kategoriyi hiçbir yönlendirme yapmadan /blog/oyunlar.php ye taşırsak, oyunlar.php ye gelen hitlerin hepsi sayfa görüntülenemiyor şeklinde açılacaktır. Oysaki bunun yerine yukarıdaki örnekteki gibi bir 301 yönlendirmesi yapsaydık;
RewriteRule ^oyunlar\.php$ blog/oyunlar.php [r=301, NC]
böylece yeni bölümdeki sitemize gelen hitler kaybolmamış olacaktır.
- Taşıma yaptığımız sayfa google'da belli bir pagerank değerine sahipse bu yönlendirme ile ilk pagerank güncellemesinde yeni sayfamız eski sayfamızın rankına sahip olacaktır. (Tabi genel bir pagerank değişimi olmaz ise)
Diğer örneklere geçecek olursak. Mesela sitemizde manavlar kategorisi var bu kategori altında elma bölümü mevcut bu bölüme girmek için gerekli olan link adresi www.siteadi.com/index.php?cat=manavlar&ur=elma olsun biz bunu şu şekilde göstermek istiyoruz.
www.siteadi.com/manavlar/elma/ yani tarayıcıya son yazdığımız adresi giren bir kişi aslında arka planda ilk yazdığımız adrese yönlenmiş olacaktır. bu yöntem aynı zamanda Arama Motoru Optimizasyonları (SEO) içinde çok önemli ve adreslerin kullanıcılarına kafasında kalması içinde yararlı olacaktır.
Kodlama yapısına gelecek olursak.
RewriteRule ^(.+)/(.+)$ index.php?cat=$1&ur=$2 [NC]
Bu kod ile düzenli ifadeleri kullanmış oluyoruz. Düzenli ifadede birinci değişken $1 içine amanlar ve ikinci değişken olan $2 içine elma isimlerini eklemiş olduk. Kodun baş kısmındaki (.+) 1 karakter ve fazlası olan herhangi bir kelime olabilir seçeneğini belirtmektedir. Bu duruma uyan ilk bölüm ise "manavlar" dır dolayısıyla $1 değişken burayı referans alarak içine "manavlar" değerini eklemiştir. Daha sonra "/" karaker ile devam eden ve (.+) ile biten bir bölümden bahsetmektedir. Buranında elma ismi olduğu aşikardır ve buda ilk değişken dolduğu için ikinci değişkeni kullanıma açıp içine "elma" değerini eklemesi anlamına gelmektedir.
Görüldüğü gibi .htaccess ile yönlendirme ve seo uyumlu url yapılması çok kolaydır. Bunlarla ilgili birçok örnek daha bulunmaktadır. Bu örnekleri sitemizde arama yaparak bulabilirsiniz.
Spr Sitem de yazıyor Ana Sayfayı Sildim index.php'yi çağırınca error veriodu şimdi oldu çok tşk
YanıtlaSil