$id = $_GET["id"]; $sorgu = mysql_query("SELECT * FROM veriler Where id='$id'");Bu yapımızda verdiğimiz linklerde eğer bir seo calısması yapılmamışsa icerik.php?id=20 gibi bir url ile çalışacaktır.Fakat biz verilerimizi daha anlasılır bir url ile çekmek istiyoruz. Örnek vermek gerekirse siteurl.com/yeni-web-sayfamiz-yayinda
Yapmamız Gerekenler
- Yazılarımızın başlıklarını özel karakterlerden arındırarak url formatına uygun bir hale getirmek
- .htaccess dosyamızda gerekli yönlendirmeleri yapmak
- Yeni linklerimizi yeni seo yapımıza göre vermek
Htaccess Yönlendirmesi
.htacces dosyamızı açıyoruz yok ise yeni bir .htacces olusturuyoruz php dosyalarımızın olduğu dizine Dosyamızın içine girdikten sonraRewriteEngine on # Yeni bir yönlendirme kuralı ekliyoruz RewriteRule ^([0-9a-zA-Z-_]+)/([0-9]+)$ posts.php?sef=$1&id=$2 [L,QSA]
Açıklamalar
posts.php = içerikleri id ye göre aldığımız php dosyamız sef = seo link yapımızın geldiği ara değişken id = posts.php de veri çektiğimiz id parametresi ([0-9a-zA-Z-_]+) = seo linkimiz bu kısma yerleşecek a-z arası 0-9 arası ve – karakterleri (sef) ([0-9]+) = post.php de kullandığımız id değeri buraya gelicek [L] = url uyuştuğu an keser bunun anlamı şu örneğin siteurl.com/merhaba burada merhaba bizim url miz fakat [L] koymaz isek merhabaads gibi bir url yide aynı sayfaya yönlendirecek bazen hatalar olabilir o yüzden [L ] koyuoruz uyuştuğu an kesiyor devam ettirmiyor [QSA] = Bu GET ile gösterilen verilerin aktif olmasını sağlar yani örnekte sef=$1&id=$2 Bazı configlerde koymaya gerek yokken bazı web server configlerinde koymayı gerektir biz öncelik olarak ekleyelim<a href="<?=seo($veri["yazi_baslik"]).'/'.$veri["yazi_id"]?>"> <?=$veri["yazi_baslik"]?> </a>
Diğer Htaccess Ayarları
.html ile biten url ler: rewriterule mizde sol kısımdaki $ dan önce .html koymamız yeterli Kategoriye göre getirmek : rewriteruleye bir parametre daha vermelisiniz ,RewriteRule ^([0-9a-zA-Z-_]+)/([0-9a-zA-Z-_]+)/([0-9]+)$ posts.php?kat=$1&sef=$2&id=$3 [L,QSA]Farklı tablolardan farklı veriler için, Örneğin haberler tablosundan , haberler/haber1/1 fotogaleri tablosundan , fotogaleri/fotohaber1/1
RewriteRule ^haberler/([0-9a-zA-Z-_]+)/([0-9]+)$ haber.php?sef=$1&id=$2 [L,QSA] RewriteRule ^galeriler/([0-9a-zA-Z-_]+)/([0-9]+)$ galeri.php?sef=$1&id=$2 [L,QSA]
Olası Bozukluk ve Hatalar
En önemli sorunlardan biri sitenizin statik dosyalarının yönlendirmeden etkilenmesi (css,js,img gibi dosyalar) 1. Sitenizin head tagları arasına base href ekleyin<base href="siteurl.com/" />2.Htaccess yapılandırması Rewrite kuralızdan hemen önce bu kodu ekleyin
RewriteCond %{REQUEST_FILENAME} !-f3.Htaccess şartlandırması belirli klasörlere dokunulmasın
RewriteCond $1 !^(css|js|images|inc|lang)