Por que você quer URLs limpos que também permitem parâmetros? Bem, para mim, a resposta foi criar uma API.
RewriteEngine on
RewriteBase /api/
RewriteCond $1 !^(index.php)
RewriteRule ^(.*)$ index.php/?route=$1&%{QUERY_STRING} [L]
Isso irá rotear qualquer coisa para a variável de rota , mas também enviará a string de consulta original.
http://example.com/api/users?user_id=365
Irá lhe dar uma $ rota de ‘/ users’ e um $ _GET [‘user_id’] de ‘365’ . (Ou como você reúne seus vars em seu idioma)