Varsayalım ki haber_oku.php adında bir dosyamız olsun. Haberleri okuyamaya yarayan link biçimide haber_oku.php?id=1 şeklinde şekillenmiş olsun. Bu varsayımları siz kendi sisteminize göre düşünün. Herkesin sistemi farklıdır. Fakat ortak nokta ID dir. Id=1 kısmı bir numaralı haberi okuduğunuz anlamına gelmektedir. Zaten Sabit olan o kısım olduğu için SEF de ID üzerinden şekillendirilir.
Biz /haber_oku.php?id=1 olan linkimizi /1-sef-nasil-yapilir.html ve ya /php-dersleri/1/sef-nasil-yapilir-dersi.html şeklinde oluşturmak istiyoruz.
Neden bu şekilde linkler peşindeyiz?
Bu linklerin bize faydası nedir gibi soruları duyar gibiyim. Bu sorulara da cevabım tabiki arama motorları botları (Böcekleri) olacaktır. Bu böcekler sitenizde taradığı sayfayı indexler. Örnek vermek gerekirse, Google botları sitenizi taradığında sizi arama sonuçlarında listeler. Arama sonuçlarında listelenen sitelerin üst sırada olanları % 99.9 SEF özelliği olan sitelerdir.
SEF kendi başına yeterli değildir ve SEO işlemlerinin yanında devede kulak bile değildir. SEF yaptığınızda arama sonuçlarında üst sıralara çıkmanız kesinlik ifaede etmez. SEO işlemlerini eksiksik yerine getiren bir sistem yüksek başarılar elde edecektir.
PHP yazılımlarda Linklere SEF nasıl yapılır? Arama motoru dostu URL nasıl yapılır?
Konun başlığında da belirttiğim üzere, işlemleri yapmamızda çok büyük etkisi olan .htaccess dosyamıza sahip olmak gerekiyor. Bu dosyaya her hangi bir notepad ile yazacağımız özel kodları, yine notepad de farklı kaydet seçeneğinden .htaccess adını vererek kaydettikten sonra elde edebiliriz. Bu kodları birazdan sizlere göstereceğim. Tüm işin .htaccess ile şekillendiğini bilmenizi isterim. .htaccess ile yapılabilecek şeylerden yalnız bir tanesidir SEF. PHP yazılımlar için kullandığımız .htaccess dosyası windows sunucularda kararlı halde çalışmaz. Çünkü apache ile tam uyumlu çalışan bir dosyadır.
Kardeşim ben windows da çalıştırmak istiyorum .htaccess’i. Nasıl çalıştıracağım ?
Windows sunucular PHP ve ASP sistemleri destekler. Yalnız windows sunucularda apache değil, genellikle IIS kullanılır. Windows sunucunuzda sırf .htaccess çalıştırmak için tabiki de apache kurmayacaksınız. Windowsda .htaccess çalıştırma işlemi hakkında buradaki adresde bir yöntemini bulabileceksiniz. Adresi takip ederek windows da .htaccess dosyanızı çalıştırabilirsiniz. Tam bir uyumluluk göstermediğini söylemek isterim. Ben sizlere .htaccess çalıştırmak için apache kurulu linux bir hosting paketi tercih etmenizi öneririm. Linux Hosting paket için tıklayınız.
SEF İşleminin yapılış mantığı nedir? .htaccess’in üstlendiği görev nedir ?
Biz sitemize gelen kullanıcıyı, benimsitem.com/1-sef-nasil-yapilir-dersi.html linkine tıkladığında .htaccess yönlendirmemiz ile bu tıklanılan URL yibenimsitem.com/haber_oku.php?id=1 sayfasından çağırarak sunacağız. Yani aslında açılan sayfa benimsitem.com/ haber_oku.php?id=1 olduğu halde adres satırında benimsitem.com/1-sef-nasil-yapilir-dersi.html olarak görünecek. İşin mantığı buradadır. benimsitem.com/1-sef-nasil-yapilir-dersi.html linki kullanıcı tarafından açılmaya kalktığında , açılmaya çalışılan sayfa hata sayfasına yönlenmek isteyecektir ve o sırada .htaccess devereye girecek ve içerik bu sayfaya çekilecektir. Böylece linkleriniz SEF hale yani arama motoru dostu URL olarak değişecektir.
Evet şimdide bu işlemler nasıl yapılıyor o konuya gelelim. Çünkü artık konu hakkında ve olayların mantığı üzerinden bilgi edinmiş oldunuz. Aşağıda vermiş olduğum kodu .htaccess dosyanıza ekliyorsunuz. Hali hazırda bir .htaccess dosyası kullanıyor iseniz ve içerisindede kodlarınız var ise, bu kodların hemen altına yapıştırmanız yeterlidir. Ama henüz bir .htacess dosyasına sahip değil iseniz aşağıdaki kodu bir notepad açarak içerisinde yapıştırınız.
Options +FollowSymLinks
RewriteEngine on
Bu komut ile .htacess dosyamıza işleri artık sen devralıyorsun diyoruz. “RewriteEngine on” teriminin anlamı yeniden yazacak olan motor açık anlamına gelmektedir. Bundan sonra verecek olduğum kodları yukarıda vermiş olduğum kodların bir satır altına yazacaksınız arkadaşlar. Esasen .htaccess koduna yükleyeceğimiz görevleri karşılayan ve .htaccess ‘in sistem ile bağlantı kurmasını sağlayan bazı özel kodlardır bu kodlar. (.*) bunlardan bir tanesidir. Heycan yapmayın hepsini sırayla öğreneceksiniz. Ve bu işi başaracaksınız. Çok ama çok kolay bir iştir SEF olayı. Kullanacağımız özel kodlardan bi diğeride RewriteRule kodudur. Yani .htaccess e siz şöyle söylüyorsunuz. Sana verdiğim bir şeyi, başka şekilde ele al ve o şekilde yansıt. RewriteRule türkçe anlamı yeniden yazma yeniden ele almadır. Zaten bizimde yapmaya çalıştığımız bu değilmi. Linkleri yeniden ele almak. Evet devam ediyoruz.
benimsitem.com/1-sef-nasil-yapilir-dersi.html
Yapmak istediğimiz link yukarıdaki gibi olacaktı hatırlarsanız. Bu linkte 3 ayrı kısım vardır. ID kısmı olan 1 , konunun adı olan sef-nasil-yapilir ve her konunun önüne eklenecek olan dersi.html kısmı. Gördüğünüz üzere link 3 ayrı kısımdan oluşuyor.Daha önceden bahsettiğim özel kodlardan olan (.*) kodu şimdi imdadımıza yetişiyor arkadaşlar.(.*) burada bazı kavramları ifade ediyor.Yani kısacasılinkte bulunan 3 ayrı kısmı ;
benimsitem.com/(.*)-(.*)-dersi.html
şekline getirmeye çalışıyoruz.Evet merak etmeyinistediğimiz şeyin gerçekleşmesine çok az kaldı. Genel sütrüktürü oluşturduk. Burada tüm işlemler ID numarası üzerinden gerçekleştirilir. En basit yöntemi budur. Zaten başka türlü bir yöntem ile, işler zorlaşacak ve hatalar meydana gelebilecektir. Haberi ID numarasına göre çekiyoruz, başlığına göre çekmiyoruz. Başlığına göre çekmek gereksiz ve zahmetli bir iş. Evet .htaccess dosyamıza ekleyeceğimiz ikincikod aşağıda yer alıyor arkadaşlar.
RewriteRule (.*)-(.*)-dersi.html
Olarak kodumuzu oluşturuyoruz. RewriteRule ile (.*) arasında bir boşluk bırakmayı unutmuyoruz. Bu önemli bir kıstastır. Aradaki boşluk yapılmadığında kod çalışmayacaktır. Çalışsa bile hatalar meydana gelecektir.
Evet (.*)-(.*)-dersi.html olarak 2 tane (.*) değişkenden hangisi alacağımızı belirleyen kodumuz ise $1 kodudur. $2 olursa ikinci (.*) alınır. Sistem bu şekilde işler. Şimdi sitemde atıyorum 1000 haber var ve siz bu 1000 haberi ID sabit alarak yönlendiriyorsunuz. Her link .htaccess dosyasına tek tek eklemeyeceksiniz tabiki. Bütün linkleri tek bir kod ile yönlendireceksiniz. Bütün linkleri kapsayan kod ise $n olarak oluşturulur.Şimdi bu kodları şekillendirelim. Sonuç olarak kodumuz aşağıdaki hali almış oalcaktır.
RewriteRule (.*)-(.*)-dersi.html haber_oku.php?id=$1
Yukarıdaki kod satırındaRewriteRule (.*)-(.*)-dersi.html ile haber_oku.php?id=$1 arasında bir karakter boşluk koymayı unutmayınız. Böylece linklerimizi istediğimiz şekle sokmuş olduk. Bu kodu başka sayfalarınız içinde yapabilirsiniz. Yine aynı işlemleri yaparak bir alt satıra yeni hazırladığınız kod satırını girebilirsiniz.
Tüm işlemler bu kadar arkadaşlar. Sizde artık SEF yapmayı öğrendiniz. Kendi mantığınızı kurarak .htaccess ile bir çok hizmetden yararlanabilirsiniz. Artık .htaccess dosyamızın son hali aşağıdaki gibi şekillenmiş olması gerekmektedir.
Options +FollowSymLinks
RewriteEngine onRewriteRule (.*)-(.*)-dersi.html haber_oku.php?id=$1
Peki linklerde SEF yapılan URL adreslerin Türkçe Karakter Sorunu olacak, o konuda nasıl bir işlem yapabiliriz?
Evet arkadaşlar bütün linklerimiz /1-sef-nasil-yapilir-dersi.html şeklinde olamayacak tabiki. Örnek verecek olursak; /2-photoshopda-yüz-ifadesi-şekillendirme-dersi.htmlbu linkte görüyorsunuzki bazı türkçe karakterlerin yer aldığı konu başlığı yer almaktadır. Görüyorsunuzki ü,ş gibi türkçe karakterler .htaccess tarafından okunmayacaktır ve link /2-photoshopda-yz-ifadesi-ekillendirme-dersi.html şekline dönüşecektir. Yani türkçe karakterler silinecektir. Yada anlamsız simgelere dönüşecektir.
Evet bununda .htaccess yolu ile çözümü mevcut. Yine bazı özel kodlar ile bu duruma el atabiliyoruz. Ve sorunsuzca türkçe karakterleri istediğimiz şekle çevirebiliyoruz. Aşağıda vermiş olduğum “karakterleri_duzelt” fonksiyon kodunu sayfanıza ekledikten sonra devam ediyoruz.
1234567 function karakterleri_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;}
Yukarıdaki kodları sayfanıza eklediniz. Ve şimdi ikinci işleme devam ediyoruz arkadaşlar. Türkçe karakterleri düzeltmek hiçde zor değil. Şimdi dersleri veritabanından çekmeyi göstereceğim.
1234567 $fikraal=mysql_query(“SELECT * FROM dersler”);while($fikra=mysql_fetch_array($fikraal)){$dersadiid=$ders['id'];$dersad=$ders['baslik'];$dersadingilizce=karakterleri_duzelt($dersad);print”<a href=$dersid-$dersadingilizce-dersi.html>$dersad</a>”;}
Yukarıdaki kod ile linkleri düzenli bir hale soktuk. Ve bu düzenlihale soktuğumuz kodlar ile ekrana linkleri şu şekilde almış olduk. Yani sayfada görünürde olan hali aşağıdaki şekle gelmiş oldu.
12 <a href=1/1-sef-nasil-yapilir-dersi.html>Sef Nasıl Yapılır?</a><a href= /2-photoshopda-yuz-ifadesi-sekillendirme-dersi.html>Photoshopda Yüz İfadesi Şekilendirme</a>
Şimdi ise .htaccess dosyanızın en son şekli aşağıdaki gibi olması gerekmektedir.
123456789101112 Options +FollowSymLinksRewriteEngine onRewriteRule (.*)-(.*)-dersi.html haber_oku.php?id=$1$fikraal=mysql_query(“SELECT * FROM dersler”);while($fikra=mysql_fetch_array($fikraal)){$dersadiid=$ders['id'];$dersad=$ders['baslik'];$dersadingilizce=karakterleri_duzelt($dersad);print”<a href=$dersid-$dersadingilizce-dersi.html>$dersad</a>”;}
Artık SEF uygulanmış PHP bir web siteniz oldu. Hayırlı Uğurlu Olsun arkadaşlar. Umarım faydalı biir makale olmuştur.