PHP Seo dostu url yapımı (php url rewrite-url routing)

daha önce asp.net için seo dostu url yapımını anlatan bir makale yayımlamıştım. Şimdi bunun benimde kullandığım php için olanını yapalım. Bilindiği üzere seo dostu url'ler arama motorları (google,yandex vb.) tarafından daha kolay indexlenip daha üst sıralarda çıkmaya yarayan kullanımların genel adıdır. Şimdi .htaccess dosyamızı açıp aşağıdaki kodları işleyerek başlayabiliriz. htaccess dosyasına ulaşamıyorsanız tıklayın

Şimdi bizim url rewrite ile yönlendireceğimiz sayfamıza gelelim. Sayfamızın urunler.php olduğunu varsayalım ve bizim sayfamız dışarıdan aldığı id değişkenlerine göre dinamizm gösterebilir. Yani urunler.php?id=3 10 litrelik sıvı yağ ürünümüzün linki iken urunler.php?id=5 1 litrelik zeytin yağı ürünümüzün linki olabilir. Biz A ve B linklerini aşağıdaki şekilde de gosterebiliriz.

www.sitemizinadi.com/10-litrelik-sivi-yag-u3.html ve www.sitemizinadi.com/litrelik-zeytin-yagi-u5.html 

Gördüğünüz gibi direkt url den sayfa içeriği hakkında bilgi sahibi olunabilidi. Bu iki linkin de tek bir sayfaya yani urunler.php ye gitmesini sağlayabiliriz. linklerde bulunan u3 u5 gibi değişkenler bizim linklerimizdeki idleri temsil ediyor. Çünkü urunler.php gelen linkin hangi urune ait olduğunu sadece id değişkeni ile anlayabilir.

htaccess dosyamıza aşağıdaki kodu ekleyerek bu değişkenleri sanki urunler.php ye gidiyormuş gibi gösterebiliriz.

RewriteEngine on
#rewritebase /
RewriteRule ^(.*)-u(.*).html$ urunler.php?id=$2&gereksiz=$1[L,NC]

burada urlmizin -u dan önceki kısmını gereksiz -u dan sonraki kısmını da id olarak atıyoruz. Bu işlemi yaptıktan sonra www.sitemizinadi.com/10-litrelik-sivi-yag-u3.html linkimiz urunler.php?id=3 yazmışız gibi işlem görecektir.

 

 

Şimdi gelin urun başlığımızı direkt olarak bir fonksiyon ile bu yapıya benzetelim. Yani öyle bir şey yapalım ki fonksiyona 10 Litrelik Sıvı Yağ ve 3 değerlerini gönderdiğimizde bize 10-litrelik-sivi-yag-u3.html değerini geri göndersin ve biz de bunu link olarak verebilelim. Bunun için aşağıdaki benim hazırladığım fonksiyonu kullanabilirsiniz. 

<!--?php 
function seoolustur($url,$id)
{
$url = trim($url);
$url = strtolower($url);
$find = array('<b-->', '');
$url = str_replace ($find, '', $url);
$url = preg_replace('/<(/{0,1})img(.*?)(/{0,1})>/', 'image', $url);
$find = array(' ', '"', '&', '&', 'rn', 'n', '/', '', '+', '<', '>');
$url = str_replace ($find, '-', $url);
$find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
$url = str_replace ($find, 'e', $url);
$find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï'); 
$url = str_replace ($find, 'i', $url);
$find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
$url = str_replace ($find, 'o', $url);
$find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
$url = str_replace ($find, 'a', $url);
$find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
$url = str_replace ($find, 'u', $url);
$find = array('ç', 'Ç');
$url = str_replace ($find, 'c', $url);
$find = array('ş', 'Ş');
$url = str_replace ($find, 's', $url);
$find = array('ğ', 'Ğ');
$url = str_replace ($find, 'g', $url);
$find = array('#');
$url = str_replace ($find, 'sharp', $url);
$find = array('/[^a-z0-9-<>]/', '/[-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
$url = str_replace ('--', '-', $url);
return $url."-u".$id.".html";
}
?>

yukarıdaki fonksiyon içine aldığı değeri seoya uygun hale getirip id yi ekleyerek bize link oluşturmayı sağlıyor. Biz bu fonksiyonu aşağıdaki gibi kullanabiliriz.

<a href="<?php echo seoolustur($baslik,$id); ?>"><?php echo $baslik;?></a>

Burada $baslik değişkenimizin 10 Litrelik Sıvı Yağ ve id değişkenimizin 3 olduğunu varsayarsak sorgumuzun html çıktısı aşağıdaki gibi olacaktır.

<a href="10-litrelik-sivi-yag-u3.html">10 Litrelik Sıvı Yağ</a>

Bu linke tıkladığımız zaman ise arka planda sistem urunler.php?id=3 e gitmişiz gibi algılayıp bizleri bu sayfaya gönderecektir.

14322

(0) Yorum

Yorumlar