.htaccess'te id'lerin sonuna $ eklemen gerektiğini düşünüyorum. ancak senin denediğim kodlarda bir farklılık var gibi...
RewriteRule ^([a-z0-9_-]+)-(.*).html$ index.php?p=list&k_id=$ [L,NC]
burada dikkat etmen gereken konuyu biliyorsundur zaten. id'yi sona ekliyoruz yukarıdaki kod ile... bir denermisin lütfen? sonucu tekrar yazıp bilgi verirsen başka bir çözüm yolu ararız

İyi çalışmalar...
Yönlendirme dinamik olmayacak. Eski indexlerimi kaybetmemek için eski 100 kadar sayfayı teker teker elle yönlendirmeye çalışıyorum.
Gelen sayfa
index.php?p=list&k_id=14 şeklinde eski indexli sayfa artık sunucuda yok
Yönlenecek sayfa ise
/20-camasir-makinesi
şeklinde olacak.
Şimdilik sorunumu .htacces yerien direk script içinde header ile yönlendirme yaparak çözdüm.