Eu usaria uma ideia de lista negra / lista de desbloqueio, dividida em dois blocos diretivos separados.
Para todos os pedidos para HTTP-80, correspondem aos diretórios ou caminhos que DEVEM ser HTTPS e os redirecionam, todo o restante passará e será exibido corretamente. Este código assume que eles são diretórios de nível superior.
Para suas solicitações HTTPS-443, faça o oposto. Se as solicitações NÃO corresponderem às listas permitidas, redirecione novamente para HTTP
RewriteEngine On
# redirect to https where appropriate
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/(admin|clients|customers) [OR]
RewriteCond %{SCRIPT_FILENAME} (contact.php|login.php)
RewriteRule ^(.*)$ https://test.dev/$1 [R=301,L]
# handle SSL requests, flick anything that doesn't match allowed back to non-SSL
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/(admin|clients|customers)
RewriteCond %{SCRIPT_FILENAME} !(contact.php|login.php)
RewriteRule ^(.*)$ http://test.dev/$1 [R=301,L]