Çalışmaz tabi çünkü hatalı yapıyorsunuz...
İlk satır herşeyi yakala demek. İkincisinde arada tire olanı yakala diyorsunuz.
Ama ilk satırda herşey koşula uyduğu için ve son kural olduğu için ikinci satıra hiç bir zaman geçmeyecek.
Basitçe uzantıyı değiştirerek koşulu değiştirebilirsiniz. Birinci durumdaki linkler içim .html ikinci satırdakiler için .htm kullanın hallolur.
RewriteRule ^(.*).html otokategori.php?id=$1 [QSA,L]
ReWriteRule ^(.*)-(.*).htm otodetay.php?hl=$1&caridal=$2 [QSA,L]
İlk satırda hiç tire - kullanmıyorsanız koşulu indirerek de yapabilirsiniz.
RewriteRule ^([a-zA-Z0-9]+).html otokategori.php?id=$1 [QSA,L]
ReWriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+).html otodetay.php?hl=$1&caridal=$2 [QSA,L]