Почему срабатывает только первое правило? Если их поменять местами, то будет работать только первое.
# subdomain
RewriteCond %{HTTP_HOST} !www.site.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-_]+).site.com [NC]
RewriteRule (.*) st.php?crt_dealer=%2 [nc,qsa]
# subdomain 2
RewriteCond %{HTTP_HOST} !www.site.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-_]+).site.com/search/ [NC]
RewriteRule (.*) list.php?crt_city=%2 [NC,QSA]
Нужно чтобы первое правило работало с любой страницы сайта, а второе только когда присутствует /search/.