şimdi diyelim ki şöyle bir kodumuz var:
PHP- Kodu:
echo "<td align='center' valign='top' width='50%'><a href='articles.php?cat_id=".$data['article_cat_id']."'>".$data['article_cat_name']."</a> <span class='small2'>($num)</span>";
bu kodun oluşturduğu linkler şöyle oluyor:
/articles.php?cat_id=1
bu kodu SEF yapmanın en mantıklı yolu şudur:
/makaleler/kategori ismi-id1/
yani basit bir klasörleme sistemi. ama ben bunu yapamadım çünkü SEF yapmaya çalıştığım sistemde tüm klasörlemeler ../../ gibi üst klasöre çıkma şeklindeydi ve ben uğraşamadım, söyle yaptım:
/makale-kategori-ismi-id1.html
konumuza dönelim: burada mantık şu server, id kelimesinden sonragelen numarayı cat_id olarak algılayacak ve o sayfayı gösterecek
**ince nokta:: buradaen sonra id1 yazdıktan sonra isterse en başta hiç birşey yazmasın, bu tamamen serbest kalıyor. mesela
/makale-arabalar-id1.html
adresi ile
/makale-suleyman-necip-huseyin-id1.html
adresi aynı sayfayı verir.
şimdi öncelikle bu kodumuzu düzenleyelim:
PHP- Kodu:
echo "<td align='center' valign='top' width='50%'><a href='makale-".$data['article_cat_name']."-id".$data['article_cat_id'].".html'>".$data['article_cat_name']."</a> <span class='small2'>($num)</span>";
kodu bize yeterli olur.
fakat bir ayrı var: eğer kategori ismimizde ğşıöç ve ya /*'^+%&/() gibi karakterler varsa bu karakterler url imizi bozacaktır. bunları temizlemek için de bir fonksiyon kullanacağız:
PHP- Kodu:
function seoname($seoit) {
// $seoit = strip_tags($seoit);
$seoit = str_replace('=',' ',$seoit);
$seoit = str_replace('/',' ',$seoit);
$seoit = str_replace('\\',' ',$seoit);
$seoit = str_replace('@',' ',$seoit);
$seoit = str_replace('~',' ',$seoit);
$seoit = str_replace('!',' ',$seoit);
$seoit = str_replace('£',' ',$seoit);
$seoit = str_replace('$',' ',$seoit);
$seoit = str_replace('%',' ',$seoit);
$seoit = str_replace('^',' ',$seoit);
$seoit = str_replace('*',' ',$seoit);
$seoit = str_replace('_',' ',$seoit);
$seoit = str_replace('{',' ',$seoit);
$seoit = str_replace('}',' ',$seoit);
$seoit = str_replace('[',' ',$seoit);
$seoit = str_replace(']',' ',$seoit);
$seoit = str_replace('-',' ',$seoit);
$seoit = str_replace(' & ',' ',$seoit);
$seoit = str_replace('"',' ',$seoit);
$seoit = str_replace('.',' ',$seoit);
$seoit = str_replace('\'',' ',$seoit);
$seoit = str_replace(',',' ',$seoit);
$seoit = str_replace(' ','-',$seoit);
$seoit = str_replace(' ','-',$seoit);
$seoit = str_replace(' ','-',$seoit);
$seoit = str_replace(':','',$seoit);
$seoit = str_replace('#','',$seoit);
$seoit = str_replace('(','',$seoit);
$seoit = str_replace(')','',$seoit);
$seoit = str_replace('---','-',$seoit);
$seoit = str_replace('--','-',$seoit);
$seoit = strtolower($seoit);
return $seoit;
}
bu fonksiyonu, global ve ya config gibi (her sayfaya inc edilen, header de olabilir) sayfalara iclude edin ve bu fonksiyonu kullanın.
şimdi "seoname" fonksiyonu kullanılmış şekilde kodumuzu yazalım:
PHP- Kodu:
echo "<td align='center' valign='top' width='50%'><a href='makale-".seoname($data['article_cat_name'])."-id".$data['article_cat_id'].".html'>".$data['article_cat_name']."</a> <span class='small2'>($num)</span>";
evet artık tamam! örnek: kategori ismimiz "Dağlar / İnsanlar" ise bu url içinde "daglar-insanlar" şeklinde gözükür.
artık işlem bitti gibi. son olarak .htaccess dosyamızı yazalım ve bitirelim
sitenizin kurulu olduğu dizinde ".htaccess" isimli bir dosya oluşturun ve içine şunları yazın:
Kod:
RewriteBase /
RewriteEngine On
RewriteRule ^makale-(.*)-id([0-9]*).html$ articles.php?cat_id=$2 [L,NC]
açıklama:
1.satır: yeniden yazdırma klasörü - siteniz ana dizindeyse böyle kalsın ama mesela forum için:
yazmanız gerekir
2. satır: yeniden yazdırma başlasın!
4. satır: yeniden yazdırma kuralı:
"başında makale yazsın, sonunda da id yazıyorsa id yazan yerin yanındaki rakamı benim articles.php?cat_id= kısmına yaz da sayfa görülsün"
şeklinde bir istektir bu satır
sorularınızı buradan sorabilirsiniz
Emir Ercan AYAR