Merhaba arkadaslar.
Link yapim soyleydi.
ilk : /deneme/icerik.php?id=1&baslik=deneme
sef linkle soyle yaptim.
ikinci : /deneme/icerik/15441-deneme-konusu.html
oldu.
Fakat ben bu ikincide yer alan id'yi adres cubugundan 15442 yaptigimda yanında yer alan konu baslıgı degismiyor, link bu sekilde kaliyor.
/deneme/icerik/15442-deneme-konusu.html
halbuki şu şekilde yönlenmesi gerek;
/deneme/icerik/15442-rasgele-bir-konu.html
httaccess yapım şu şekilde;
Options +FollowSymLinks
RewriteEngine on
RewriteBase /deneme/
RewriteRule ^icerik/(.*)-(.*).html$ icerik.php?id=$1&baslik=$2 [L,NC]
Bunu nasıl saglarim fikri olan varmi ?
Olmaz çünkü orada başlık kısmının sql sorgusuna bir etkisi yok. Onu şöyle yaparsın.
Makale başlığını veritabanında slug diye bir alan açarsın ve bunun içine kaydedersin. Örneğin başlığın Deneme Başlığı ise slug deneme-basligi olur. Daha sonra bu açtığın başlığın id si 2345 diyelim.
içerik görüntülemeye girdiğin zaman get ile id ve slug ı alırsın. Sorgu içinde sadece id ye göre değil slug'a göre de arama yaparsın yani where id nin yanında bir de and deyip slug= diyeceksin ve linkten gelen deneme-basligi kısmını alacaksın. Şimdi olay bundan sonra başlıyor.
linkte id 2345 ve slug deneme-basligi oldugu zaman içeriğin gelecektir. Amaaa id yi 23456 olarak değiştirirsen id si 23456 olan ve slug'ı deneme-basligi olan içeriği sana bulamayacak. Sorgunda da bu noktan yola çıkarak içerik bulunamadığı anda get ile gelen id yi alıp yeni bir sorgu oluşturacaksın ve 23456 nolu içeriğin slug'ını alıp bu sayfaya yönlen diyeceksin ve karşında istediğin sayfa olacak.
Listeyle özetlersek:
- veritabanına slug alanı aç içerik başlığını kaydet
- içerik detay sayfasında id ve slug'a göre içerik bilgilerini çek
- yukarıdaki bilgide içeriği bulamadığın anda değişen id ile yeni bir sql sorgusu yazıyorsun
- sql sorgundan gelen id ve slug bilgisiyle linki oluşturup kullanıcıyı yönlendiriyorsun.