"Enter"a basıp içeriğe geçin

PHP ile SEO Url Yapımı (SEO Fonksiyonu)

PHP ile SEF link yani kullanıcı dostu linkler oluşturmak için aşağıda göstereceğim kolay ve basit bir yolla bu işlemi halledebileceksiniz.

İlk olarak seo url yapımı için bir ürünü ya da bir makaleyi paylaştığımız bir sistem düşünelim. (Her türlü sisteme uyarlayabilirsiniz.) MySQL tablomuza yeni bir alan ekleyelim oda “sef_link” gibi bir alan olsun. Daha sonrasında aşağıdaki fonksiyonu kaydetme işlemi yapacağınız dosyaya ekleyin. Başka sayfaya ekleyip include edebilirsiniz. Bu fonksiyon Türkçe karakterleri normal karakterlere, özel karakterleri de URL formatında çevirmektedir örnek vermek gerekirse;

// Bu
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('/&.+?;/', '', $s);
 $s = preg_replace('/\s+/', '-', $s);
 $s = preg_replace('|-+|', '-', $s);
 $s = preg_replace('/#/', '', $s);
 $s = str_replace('.', '', $s);
 $s = trim($s, '-');
 return $s;
}

$baslik = "İsteğe Bağlı Asil Listede Yer Alan Öğrencilerimiz için Dilekçe Duyurusu";
echo seo($baslik);
 
// Çıktı : istege-bagli-asil-listede-yer-alan-ogrencilerimiz-icin-dilekce-duyurusu


Bu adıma kadar tüm işlemleri yaptıktan sonra yazıları, ürünü ya da neyi kaydediyorsak orada kaydettiğimiz ürünün adını sorguda fonksiyondan geçirerek eklediğimiz “sef_link” sütununa insert edeceğiz yani;

SEO Fonksiyonu

<?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;.+?;/', '', $s);
 $s = preg_replace('/\s+/', '-', $s);
 $s = preg_replace('|-+|', '-', $s);
 $s = preg_replace('/#/', '', $s);
 $s = str_replace('.', '', $s);
 $s = trim($s, '-');
 return $s;
}

if (isset($_POST['urun_adi'])) {

 $urun_adi=$_POST['urun_adi'];
 $seo=seo($urun_adi);
 mysql_query("INSERT INTO urunler (urun_adi, sef_link) VALUES('$urun_adi', '$seo') ");

 if (mysql_affected_rows()) {
 	echo "Kaydedildi!";
 }
 else{
 	echo "Hata!";
 }

}

 ?>
 <!DOCTYPE html>
 <html>
 <head>
 	<title>Örnek</title>
 </head>
 <body>
 	<form action="" method="post">
 		<input type="text" name="urun_adi">
 	</form>
 </body>
 </html>

Yukarıdaki örneği açıklayacak olursam veritabanı tablomuzda iki alan olsun bir ürünün adı (urun_adi) birde sef link haliyle kaydedeceğimiz kısmımız (sef_link), bu kaydedeceğimiz kısmı biraz daha açacak olursam, Ürün adını inputa “Erkek Kol Saati” diye girdiğimizde hem ürünün adı kaydedilecek hemde geçirdiğimiz seo fonksiyonundan “erkek-kol-saati” diye sef_link kısmımıza kaydedeceğiz.

Htaccess Yönlendirmesi
“.htaccess” dosyamızı açıyoruz yok ise yeni bir “.htaccess” oluşturuyoruz PHP dosyalarımızın olduğu dizine oluşturduktan sonra, dosyamızın içerisine aşağıdaki kod bloğunu yapıştırıyoruz.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9a-zA-Z-_/]+)$ index.php?par=$1[L,QSA] 


Bu işlemleri de yaptıktan sonra, yapmamız gereken tek bir adım kaldı. O adım ise get ile par parametresini çekip veritabanında “sef_link” sütunlarında öyle bir değer var ise diğer bilgileri yazdırmak olacaktır.

$par = $_GET['par'];
$kontrol = mysql_num_rows("SELECT * FROM urunler WHERE sef_link='$par'");
if ($kontrol==0) {
	header("Location: https://emreakdas.com/404");
}

Yukarıdaki kod bloğunda GET ile “par” adındaki parametremizi çektik bu değer ise şöyle geldi; “https://emreakdas.com/erkek-kol-saati” buradaki “erkek-kol-saati” kısmı bizim parametremiz oluyor. İlgili değeri çektikten sonra veritabanın da böyle bir değer var mı diye kontrol ettik eğer var ise bir şey yapma (bu alanda veritabanından par değişkeni ile aratıp bilgileri listeleyebilirsiniz.) eğer yok ise 404’e yönlendir dedik.

Olası Bozukluk ve Hatalar
En önemli sorunlardan biri sitenizin statik dosyalarının yönlendirmeden etkilenmesi (css,js,img gibi dosyalar)

Çözüm: Sitenizin head tagları arasına base href ekleyin .

<base href="siteurl.com/" />

Tüm adımları yaptıktan sonra sıkıntısız bir şekilde kullanıcı dostu sef link oluşturmuş olacaksınız. Takıldığınız herhangi bir kısımda yorum yazmaktan çekinmeyiniz. İşinize yarar diğer fonksiyonlar için göz atın; PHP Fonksiyonları

Okuyucu Puanı
[Toplam: 1 Ortalama: 5]

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir