Bu istediğinizi yapmak için htaccess yerine php den işlem yapmanızı tavsiye ederim,

siteadi.com/deneme-yazisi/ diye girildiğinde örneğin oku.php ye gönderme yapmışsanız, bu dosyanın gelen isteği kategorilerle karşılaştırması tutuyorsa kategoriyi, tutmuyorsa yazılarıla karşılaştırıp yazı varsa yazıyı, yoksa 404 hatası döndürmesini sağlamalısınız.

Yok ben illa htaccess ile yapacağım derseniz

RewriteCond %{REQUEST_URI} !^/kategori1/.*$
RewriteCond %{REQUEST_URI} !^/kategori2/.*$
RewriteCond %{REQUEST_URI} !^/kategori3/.*$
RewriteCond %{REQUEST_URI} !^/kategori4/.*$
....
RewriteRule ^([0-9a-zA-Z-_]+)$ /oku.php?id=$1

###sonra kategorilere ayrıca yönlendirme

RewriteCond %{REQUEST_URI} ^/kategori1/.*$
RewriteCond %{REQUEST_URI} ^/kategori2/.*$
RewriteCond %{REQUEST_URI} ^/kategori3/.*$
RewriteCond %{REQUEST_URI} ^/kategori4/.*$
RewriteRule ^([0-9a-zA-Z-_]+)$ /listele.php?id=$1

(yukarıda ! (ünlem) işaretine dikkat edin)

bu şekilde alt alta tüm kategorilerinizi hariç bırakıp yönlendirme yapmalı, en sonada kategoriye gelen istekleri ayrıca yönlendirmelisiniz. Tabi bu biraz amele işi olur, ve sunucunuza biraz daha yük bindirecektir, (htaccess satır satır okunur) Tavsiyem oku.php ve listele.php dosyalarını birleştirerek işi php ile çözmeniz.