Php projelerinizde urllerinizin anlamlı ifadeler oluşturması ve google vs. arama motorları ile seo kuralları ile uyumlu urller oluşturabilmesi için ayrıca sql injection ‘dan korunabilmek için url rewriting yapmak gereklidir. Kendi kullanmış olduğum .htaccess yöntemini sizinle paylaşmak istiyorum.
Önce bir .htaccess dosyası oluşturmamız gerekiyor ve bu dosyayı notepad veya sublimetext yada notepad++ gibi bir program kullanarak .htaccess olarak olusturabilirsiniz.
Oluşturduğumuz .htaccess dosyası içerisine kodlarımızı yazalım. index.php hakkimizda.php ve hizmetlerimiz.php?id=1 gibi linklerimizin olduğunu düşünelim.
.htaccss dosyası;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(css|js|images|inc|lang)//Sabit sayfalar için oluşturmamız gereken yapı aşağıdaki gibidir.(anasayfa yazdığımızda index.php sayfasını çağır)
RewriteRule ^anasayfa/? index.php [NC,L]
RewriteRule ^hakkimizda/? hakkimizda.php [NC,L]// Dinamik sayfalar için 0-9 ve a-z arasındaki karakterler için ([0-9a-zA-Z-_]+) bu yapıyı ve id=1 icin 0-9 arası rakamlardan oluşan karakterler seçilmeli ([0-9]+) bu şekilde oluşturup hizmetlerimiz.php?id= sayfasını çağırmalıyız.
RewriteRule ^hizmetlerimiz/([0-9a-zA-Z-_]+)/([0-9]+)? hizmetlerimiz.php?id=$2 [L,QSA]
.htaccess dosyamızı oluşturduk sıra bize lazım olan urllerdeki Türkçe karakterlerimizden kurtulmak icin bir fonksiyon gerekli hazır yazılmış fonksiyonları kullanabiliriz. Arama motorunda seo fonksiyon şekilde aratıp bulabiliriz fakat ben şimdi o fonksiyonu sizinle paylaşacağım…
Sayfanın başına veya bir fonksiyon dosyası oluşturup projeye include edin.
<?php function seo($s) { $tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','(',')','/',' ',',','?'); $eng = array('s','s','i','i','i','g','g','u','u','o','o','c','c','','','-','-','',''); $s = str_replace($tr,$eng,$s); $s = strtolower($s); $s = preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;.+?;/', '', $s); $s = preg_replace('/\s+/', '-', $s); $s = preg_replace('|-+|', '-', $s); $s = preg_replace('/#/', '', $s); $s = str_replace('.', '', $s); $s = trim($s, '-'); return $s; } ?>
index.php icin <a href=”anasayfa” >Anasayfa</a> şeklinde çağırabilirsiniz. ortaya cıkan sonuç url http://sayfadi.com/anasayfa
Dinamik sayfalar için MySqlden veri çektiğimizi düşünürsek;
<?php $hizmetsor=mysqli_query($baglan,"select * from hizmet"); while ($hizmetcek=mysqli_fetch_assoc($hizmetcek)) {?> <a href="hizmetlerimiz/<?=seo($hizmetcek["baslik"]).'/'.$hizmetcek["hizmet_id"]?>">Hizmet Başlık</a><?php } ?>
Şeklinde belirtilen sayfayı çekebilirsiniz. Ortaya cıkan sonuc url http://sayfadi.com/hizmetlerimiz/hizmet-adi/1 şeklinde bir link oluşacaktır.
En son olarak <head></head> tagları arasına <base href=”http://siteadi.com” /> oluşturalım.
Yaptığımız işlemleri sırası ile yaparsak sayfalarımıza hem dinamik hemde SEO uyumlu bir yapı içerisinde linkler oluşturabilriz.
Umarım faydası olmuştur.
I think that is among the such a lot important information for me.
And i am happy studying your article. However should observation on few
basic issues, The web site style is great, the articles is actually great : D.
Good activity, cheers
SELAM ÇOKİYİ
Merhabalar, paylaşımınız için teşekkür ederim.
eski bir konu ama ben yeni başladım ve bu yukarıda yazılanı yaptım
2 sorun var.
1. linkin sonunda id numarası var bunun olmasını istemiyorum.
2. çektiğim sayfa sanki css dosyası çalışmıyormuş gibi hiç bir şey görüntülenmiyor yazılar haricinde. yani görsellik 0
sorunu nasıl çözeebilirim.
Head tagları arasında base kullanırsan sorunun ortadan kalkacaktır. Css’leri görecektir.
Hizmet idsi göndermek istemiyorsan onu farklı bir methotla göndermen gerekcektir.
Hi my family member! I wish to say that this article
is amazing, nice written and include approximately
all significant infos. I would like to see extra posts like this .
Merhaba,acaba bu yöntem ile gönderilen verileri daha sonra
if isset($_GET){
$degisken = $_GET[‘gettteki_veri’];
}
şeklinde sorunsuz alabiliyor muyuz?
anladığım kadarıyla id url de göstermek istemiyorsun. onu farklı bir methot kullanarak yapmanız gerekli bu yöntem için geçerli değil daha önce denemedim ihtiyaçta duymadım.
URL de id göstermek istemiyorsanız okuyun…
Veritabanı tablonuzda “url” isminde bir sütun oluşturun ve bu kısıma eklediğiniz içerik “php-seo-uyumlu-link” gibi olsun. Boşluk veya Türkçe karakter kullanmayın.
.htaccess dosyamızda eklenecek kod
RewriteRule ^konu/([0-9a-zA-Z-_]+)? konu.php?url=$url [L,QSA]
Konu.php de içeriği veritabanından çekmek için kullanacağımız kodlar
prepare(“SELECT * FROM tablo Where url=:url LIMIT 1”);
$sorgu->execute([‘url’ => $_GET[“url”]]);
foreach ($sorgu as $yaz) {
echo $yaz[‘baslik’];
}
? >
Önemli Uyarı: siteadi.com/konu/php-seo-uyumlu-link url yapısı bu şekilde olacaktır. Anasayfada konulara link verirken bu yapıya uymazsanız sayfa beyaz gözükür.
İd sütunundan veri çeker gibii url sütunundan veri çekilcek işin özeti bu.