Premetto che mi sono avvicinato da poco a questo argomento, ma a me queste due regole

QUESTO FUNZIONA
RewriteRule ([^/]+).html ./categoria.php?id_cat_url=$1 [L,QSA]

NON MI STAMPA A VIDEO IL REQUEST DI ID_SOTCAT ???
RewriteRule ([^/]+).html ./sottocategoria.php?id_sotcat=$1 [L,QSA]
sembrano differire solo per la seconda parte, cioè l'indirizzo con il quale vuoi sostituire l'indirizzo che corrisponde a questo pattern:

([^/]+).html
Perciò essendo scritta prima la regola

RewriteRule ([^/]+).html ./categoria.php?id_cat_url=$1 [L,QSA]
e avendo questa regola la flag [L], che indica di fermarsi se l'indirizzo trovato nell'url corrisponde alla prima parte di questa regola (cioè ([^/]+).html ) perchè può avvenire la sostituzione, ecco che l'indirizzo viene sempre sostituito con ./categoria.php?id_cat_url=$1, senza mai procedere a verificare la regola sotto..

Quindi potresti provare a specificare meglio la forma dei due pattern, in modo che siano diversi tra loro